Uso docker-compose
y múltiples Dockerfile
en directorios separados
No cambiar el nombreDockerfile
de Dockerfile.db
o 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 docker
carpeta 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 Dockerfile
en un directorio como docker/web/Dockerfile
, todo lo que necesita es configurar la compilación context
de docker-compose.yml
esta 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/Dockerfile
como 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.