Can docker compose build image from different Dockerfiles at the same folder

20.5k views Asked by At

My containers should share the same source code folder.

But they should build from different Dockerfiles.

Is it possible to build them with docker-compose and build from different Dockerfiles at a time?

I wish there is a syntax like

build: . -f <<Dockerfile_ABC> build: . -f <<Dockerfile_CDE>

abc:
  build: . -f <<Dockerfile_ABC>
  environment:
    - PROJECT=abc
  command: ruby abc/abc.rb
  volumes:
      - ./:/working_direcotry
  ports:
    - 5904:5904

cde:
  build: . -f <Dockerfile_CDE>
  environment:
    - PROJECT=cde
  command: ruby cde/cde.rb
  volumes:
      - ./:/working_direcotry
  ports:
    - 5902:5902
2

There are 2 answers

2
OrangeTux On

Just specify the name of the Dockerfile:

abc:
    build: path/to/Dockerfile_for_abc
1
Tyrone Wilson On

The following worked for me

abc:
  build:
    context: .
    dockerfile: Dockerfile.one
def:
  build:
    context: .
    dockerfile: Dockerfile.two

Of course you can tweak the context as needed if you have different contexts. I also use this to have separate Dockerfile.production versions to set things up differently for production versions of the app.