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 requeridaservices: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.