Use docker-compose
e múltiplo Dockerfile
em diretórios separados
Não renomeie seuDockerfile
para Dockerfile.db
ou Dockerfile.web
, ele pode não ser suportado pelo seu IDE e você perderá o destaque da sintaxe.
Como Kingsley Uchnor disse , você pode ter vários Dockerfile
, um por diretório, que representam algo que você deseja criar.
Eu gosto de ter uma docker
pasta que contém cada aplicativo e sua configuração. Aqui está um exemplo de hierarquia de pastas do projeto para um aplicativo Web que possui um banco de dados.
docker-compose.yml
docker
├── web
│ └── Dockerfile
└── db
└── Dockerfile
docker-compose.yml
exemplo:
version: '3'
services:
web:
# will build ./docker/web/Dockerfile
build: ./docker/web
ports:
- "5000:5000"
volumes:
- .:/code
db:
# will build ./docker/db/Dockerfile
build: ./docker/db
ports:
- "3306:3306"
redis:
# will use docker hub's redis prebuilt image from here:
# https://hub.docker.com/_/redis/
image: "redis:alpine"
docker-compose
Exemplo de uso da linha de comando:
# The following command will create and start all containers in the background
# using docker-compose.yml from current directory
docker-compose up -d
# get help
docker-compose --help
Caso você precise de arquivos de pastas anteriores ao criar seu Dockerfile
Você ainda pode usar a solução acima e colocá-la Dockerfile
em um diretório como docker/web/Dockerfile
, tudo o que você precisa é definir a compilação context
da docker-compose.yml
seguinte maneira:
version: '3'
services:
web:
build:
context: .
dockerfile: ./docker/web/Dockerfile
ports:
- "5000:5000"
volumes:
- .:/code
Dessa forma, você poderá ter coisas como esta:
config-on-root.ini
docker-compose.yml
docker
└── web
├── Dockerfile
└── some-other-config.ini
e ./docker/web/Dockerfile
assim:
FROM alpine:latest
COPY config-on-root.ini /
COPY docker/web/some-other-config.ini /
Aqui estão alguns comandos rápidos do tldr docker-compose . Certifique-se de consultar a documentação oficial para obter mais detalhes.