Uso docker-composey múltiples Dockerfileen directorios separados
No cambiar el nombreDockerfile de Dockerfile.dbo Dockerfile.web, puede no ser compatible con su IDE y se perderá el resaltado de sintaxis.
Como dijo Kingsley Uchnor , puede tener múltiples Dockerfile, uno por directorio, que representan algo que desea construir.
Me gusta tener una dockercarpeta que contenga cada aplicación y su configuración. Aquí hay una jerarquía de carpetas de proyecto de ejemplo para una aplicación web que tiene una base de datos.
docker-compose.yml
docker
├── web
│ └── Dockerfile
└── db
└── Dockerfile
docker-compose.yml ejemplo:
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 ejemplo de uso de línea 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
En caso de que necesite archivos de carpetas anteriores al construir su Dockerfile
Todavía puede usar la solución anterior y colocarla Dockerfileen un directorio como docker/web/Dockerfile, todo lo que necesita es configurar la compilación contextde docker-compose.ymlesta manera:
version: '3'
services:
web:
build:
context: .
dockerfile: ./docker/web/Dockerfile
ports:
- "5000:5000"
volumes:
- .:/code
De esta manera, podrás tener cosas como esta:
config-on-root.ini
docker-compose.yml
docker
└── web
├── Dockerfile
└── some-other-config.ini
y una ./docker/web/Dockerfilecomo esta:
FROM alpine:latest
COPY config-on-root.ini /
COPY docker/web/some-other-config.ini /
Aquí hay algunos comandos rápidos de tldr docker-compose . Asegúrese de consultar la documentación oficial para más detalles.