Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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
like image 587
user3675188 Avatar asked Jun 13 '15 01:06

user3675188


People also ask

Can you have two Dockerfiles in folder?

As Kingsley Uchnor said, you can have multiple Dockerfile , one per directory, which represent something you want to build. I like to have a docker folder which holds each applications and their configuration. Here's an example project folder hierarchy for a web application that has a database.

Can a Dockerfile build multiple images?

A multistage build allows you to use multiple images to build a final product. In a multistage build, you have a single Dockerfile, but can define multiple images inside it to help build the final image.

Can a docker container have multiple Entrypoints?

But since Docker allows only a single ENTRYPOINT (to be precise, only the last ENTRYPOINT in the Dockerfile has an effect), you need to find a way to run multiple processes (the tunnel and the application) with a single command.

Can we have 2 base images in docker?

Using multi-stage dockerfiles, you can use several base images as well as previous intermediate image layers to build a new image layer.


1 Answers

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.

like image 94
Tyrone Wilson Avatar answered Sep 29 '22 12:09

Tyrone Wilson