¿Qué hace docker-compose-orchestration?
Orquestración de contenedores con Docker Compose para aplicaciones multi-contenedor, redes, volúmenes y despliegue en producción
Descripción General
Este skill de Docker Compose permite gestionar aplicaciones multi-contenedor de forma sencilla y eficiente. Define servicios, redes y volúmenes en un archivo YAML para orquestar contenedores en entornos de desarrollo, pruebas y producción.
Características clave
- Definición de servicios: Configura múltiples contenedores con sus imágenes, puertos, variables de entorno y dependencias.
- Redes personalizadas: Crea redes internas para aislar y conectar servicios de manera segura.
- Volúmenes persistentes: Gestiona datos persistentes con volúmenes nombrados o bind mounts.
- Healthchecks: Implementa verificaciones de salud para garantizar la disponibilidad de los servicios.
- Escalado: Escala servicios horizontalmente con
docker-compose up --scale. - Variables de entorno: Usa archivos
.envpara parametrizar configuraciones. - Perfiles: Activa o desactiva servicios según perfiles (dev, prod, test).
Plataformas compatibles
- Docker Engine (cualquier versión reciente)
- Docker Desktop (Windows, macOS, Linux)
- CI/CD (GitHub Actions, GitLab CI, Jenkins)
- Entornos cloud (AWS ECS, Azure Container Instances con Docker Compose)
Cómo usar
- Crea un archivo
docker-compose.ymlen la raíz de tu proyecto. - Define los servicios, redes y volúmenes necesarios.
- Ejecuta
docker-compose up -dpara iniciar los contenedores en segundo plano. - Usa
docker-compose logs -fpara ver los logs en tiempo real. - Detén los contenedores con
docker-compose down.
Ejemplo de archivo docker-compose.yml
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "80:80"
networks:
- frontend
depends_on:
- api
api:
build: ./api
environment:
- DB_HOST=db
networks:
- frontend
- backend
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
db:
image: postgres:15
volumes:
- db-data:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
networks:
- backend
networks:
frontend:
backend:
volumes:
db-data:
Notas de producción
- Usa
restart: alwayspara garantizar alta disponibilidad. - Limita recursos con
deploy.resources. - Configura logging con
logging.driver. - Para entornos multi-nodo, considera Docker Swarm o Kubernetes.