Docker Compose | Stacks Declarativos
Despliegue estructurado de aplicaciones multi-contenedor. Definición de dependencias de arranque entre servicios, gestión nativa de redes compartidas y control de ciclos de vida unificados.
01. El Manifiesto Táctico: Estructura docker-compose.yml
A continuación se documenta un stack completo de producción que levanta un servidor web Nginx conectado a una base de datos PostgreSQL, completamente aislados en su propio segmento de red y con persistencia inyectada.
services:
db-backend:
image: postgres:alpine
container_name: compose-db-srv
environment:
- POSTGRES_PASSWORD=SuperSecr3tPass!
volumes:
- datos-postres-vol:/var/lib/postgresql/data
networks:
- stack-privado-net
restart: always
web-frontend:
image: nginx:alpine
container_name: compose-web-srv
ports:
- "8080:80"
networks:
- stack-privado-net
depends_on:
- db-backend # Fuerza a Docker a levantar la base de datos antes que el servidor web
restart: always
volumes:
datos-postres-vol: # Inicializa el volumen de forma automática si no existe
networks:
stack-privado-net:
driver: bridge
02. Comandos de Control Operativo
**Regla de Ejecución:** Todos los comandos de control deben ser invocados parándose físicamente en el mismo directorio donde se ubica el archivo docker-compose.yml.
Levantar y Desplegar todo el Stack en Segundo Plano
Stack Deploy
El comando analiza el manifiesto, descarga las imágenes faltantes, crea las redes, asocia los volúmenes y levanta los servicios respetando el orden del depends_on. El flag -d (detached) libera la consola.
docker compose up -d
Verificar el Estado Único de los Servicios del Manifiesto
Stack Status
A diferencia de docker ps (que muestra todos los contenedores globales del host), este comando filtra y muestra de forma exclusiva la salud, puertos y nombres de los contenedores asociados a este archivo de automatización.
docker compose ps
Apagar, Limpiar y Destruir el Stack de Forma Controlada
Stack Teardown
Detiene los contenedores y elimina tanto los procesos como las interfaces de red virtuales creadas, dejando el sistema limpio. Garantía de Seguridad: Los volúmenes físicos de datos se quedan intactos en el host para evitar pérdidas catastróficas, a menos que agregues explícitamente el flag -v.
docker compose down