Domina la estructura YAML de Docker Compose y conviértela en una plantilla reutilizable para desplegar desde uno hasta cien contenedores sin fricción. Aquí verás cómo definir servicios, puertos, volúmenes, variables de ambiente, redes y el parámetro depends_on para un arranque ordenado y confiable.
¿Cómo estructurar un YAML de Docker Compose paso a paso?
La base es clara: el archivo YAML organiza todo en secciones que describen tu mini orquestación. Desde la versión (hoy ya opcional desde 3.8), hasta los services, networks y volumes. La indentación es crítica: cualquier desalineación rompe la definición.
¿Qué incluye la sección services?
- Nombre del servicio único y descriptivo.
- Imagen remota o local: puedes usar una image pública sin pasos previos.
- Construcción local: usa build con Dockerfile en la carpeta actual.
- Puertos: mapeo entre host, Docker y contenedor.
- Volúmenes: persistencia y montaje de carpetas/archivos.
- Variables de ambiente: configuración clara por servicio.
- depends_on: arranque condicionado a otros servicios.
# docker-compose.yml
# version: '3.8' # opcional; ya no es requerida
services:
web:
build:
context: .
dockerfile: Dockerfile
ports:
- "8080:80"
volumes:
- ./:/app
environment:
- APP_ENV=prod
depends_on:
- db
- cache
- proxy
proxy:
image: public/imagen:tag
ports:
- "80:80"
networks:
- app_net
db:
image: public/imagen-db:tag
volumes:
- db_data:/var/lib/data
networks:
- app_net
cache:
image: public/imagen-cache:tag
networks:
- app_net
networks:
app_net: {}
volumes:
db_data: {}
¿Qué ventajas aportan servicios, volúmenes y variables de ambiente?
Definir todo en Compose es más presentable y mantenible que encadenar banderas en docker run. Además, Compose descarga automáticamente imágenes públicas cuando no existen localmente, reduciendo pasos manuales.
¿Por qué mejora tu flujo de trabajo?
- Legibilidad superior: configuración declarativa y ordenada.
- Repetibilidad: se ejecuta igual en distintos entornos.
- Persistencia con volúmenes nombrados como
db_data.
- Configuración centralizada con variables de ambiente por servicio.
- Escalabilidad: funciona para uno o muchos contenedores.
¿Cómo usar redes y depends_on para orquestar contenedores?
Con networks creas una red común y su configuración se propaga a los contenedores que la usan. Esto facilita la comunicación interna y reduce errores. Con depends_on, garantizas que un servicio dependiente no arranque hasta que sus dependencias estén listas y ejecutándose, evitando fallos por orden de inicio.
¿Cómo convertirlo en una plantilla confiable?
- Guarda y reutiliza este archivo como template de referencia.
- Imprímelo o consérvalo en formato digital para consulta rápida.
- Ajusta nombres de servicios, puertos y volúmenes según el proyecto.
- Mantén la indentación alineada para evitar errores sutiles.
- Agrega redes y volúmenes según el crecimiento del entorno.
¿Tienes dudas o un caso de uso particular con Compose? Comenta cómo organizarías tus servicios y qué te gustaría optimizar en tu template.