12
votes

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
you should be fine to raise pull request to docker github directly for your idea - BMW
Is this a possible repeat of stackoverflow.com/questions/29835905/…. At first I misunderstood this question (ignored the docker-compose part) and wrote an answer. I deleted that answer now, and posted this comment instead haha. - Gobi Dasu

2 Answers

21
votes

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.

0
votes

Just specify the name of the Dockerfile:

abc:
    build: path/to/Dockerfile_for_abc