Combinar y generar la configuración a partir de múltiples archivos Compose
En este paso, aprenderá cómo combinar configuraciones de múltiples archivos Docker Compose y generar la configuración final combinada. Esta es una función poderosa que le permite definir una configuración base y luego sobrescribirla o extenderla con archivos adicionales, lo cual es útil para gestionar diferentes entornos (por ejemplo, desarrollo, preproducción, producción).
Seguiremos trabajando en el directorio ~/project
. En el paso anterior, creamos un archivo docker-compose.yaml
. Ahora, creemos otro archivo Compose para extender la configuración base. Lo llamaremos docker-compose.override.yaml
.
nano ~/project/docker-compose.override.yaml
Pegue el siguiente contenido en el archivo docker-compose.override.yaml
:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
Este archivo de sobrescritura modifica el servicio web
definido en docker-compose.yaml
. Cambia el mapeo de puertos del host de 80 a 8080 y agrega un montaje de volumen para servir contenido HTML estático desde un directorio local llamado html
.
Guarde el archivo presionando Ctrl + X
, luego Y
y Enter
.
Ahora, creemos el directorio html
y un archivo index.html
simple dentro de él.
mkdir ~/project/html
nano ~/project/html/index.html
Pegue el siguiente contenido en ~/project/html/index.html
:
<h1>Hello from Nginx!</h1>
Guarde el archivo presionando Ctrl + X
, luego Y
y Enter
.
Por defecto, Docker Compose busca automáticamente docker-compose.yaml
y docker-compose.override.yaml
en el directorio actual y los combina. Las configuraciones en el archivo de sobrescritura tienen prioridad.
Para ver la configuración combinada, asegúrese de estar en el directorio ~/project
y ejecute nuevamente el comando docker-compose config
.
cd ~/project
docker-compose config
Ahora debería ver la configuración combinada, donde el servicio web
tiene el mapeo de puertos 8080:80
y el montaje de volumen ./html:/usr/share/nginx/html
.
También puede especificar explícitamente qué archivos Compose utilizar con la opción -f
. El orden en el que se especifican los archivos es importante, ya que los archivos posteriores sobrescriben a los anteriores.
Por ejemplo, para combinar explícitamente docker-compose.yaml
y docker-compose.override.yaml
, puede ejecutar:
docker-compose -f docker-compose.yaml -f docker-compose.override.yaml config
En este caso, esto producirá la misma salida combinada que ejecutar docker-compose config
sin la opción -f
, porque docker-compose.override.yaml
se detecta y combina automáticamente después de docker-compose.yaml
.