Utilizzare docker-compose
e multipli Dockerfile
in directory separate
Non rinominare il tuoDockerfile
per Dockerfile.db
o Dockerfile.web
, potrebbe non essere supportato dalla IDE e si perde l'evidenziazione della sintassi.
Come ha detto Kingsley Uchnor , puoi avere più Dockerfile
, uno per directory, che rappresentano qualcosa che vuoi costruire.
Mi piace avere una docker
cartella che contiene ogni applicazione e la loro configurazione. Ecco una gerarchia di cartelle di progetti di esempio per un'applicazione Web che ha un database.
docker-compose.yml
docker
├── web
│ └── Dockerfile
└── db
└── Dockerfile
docker-compose.yml
esempio:
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
esempio di utilizzo da riga di 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
Nel caso in cui siano necessari file da cartelle precedenti durante la creazione del Dockerfile
Puoi ancora usare la soluzione sopra e posizionare il tuo Dockerfile
in una directory come docker/web/Dockerfile
, tutto ciò che serve è impostare la build context
nel tuo in docker-compose.yml
questo modo:
version: '3'
services:
web:
build:
context: .
dockerfile: ./docker/web/Dockerfile
ports:
- "5000:5000"
volumes:
- .:/code
In questo modo, sarai in grado di avere cose come questa:
config-on-root.ini
docker-compose.yml
docker
└── web
├── Dockerfile
└── some-other-config.ini
e ./docker/web/Dockerfile
così:
FROM alpine:latest
COPY config-on-root.ini /
COPY docker/web/some-other-config.ini /
Ecco alcuni comandi rapidi di tldr docker-compose . Assicurati di fare riferimento alla documentazione ufficiale per maggiori dettagli.