¿Qué es Docker Compose?
Docker Compose es una herramienta para definir y ejecutar aplicaciones multi-contenedor.
En lugar de ejecutar manualmente comandos docker run con múltiples opciones, describes
toda tu pila de aplicación en un solo archivo docker-compose.yml.
Archivo Compose Básico
# docker-compose.yml
services:
web:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html:ro
Ejemplo Full Stack
# docker-compose.yml
services:
db:
image: postgres:16-alpine
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: secreto
POSTGRES_DB: miapp
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U admin"]
interval: 10s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
api:
build:
context: ./api
dockerfile: Dockerfile
ports:
- "4000:4000"
environment:
DATABASE_URL: postgres://admin:secreto@db:5432/miapp
REDIS_URL: redis://redis:6379
depends_on:
db:
condition: service_healthy
restart: unless-stopped
frontend:
build: ./frontend
ports:
- "3000:3000"
depends_on:
- api
volumes:
postgres-data:
Comandos de Compose
# Iniciar todos los servicios
docker compose up
# Iniciar en modo separado
docker compose up -d
# Construir e iniciar
docker compose up --build
# Detener todos los servicios
docker compose down
# Detener y eliminar volúmenes
docker compose down -v
# Ver logs de servicios
docker compose logs -f api
# Listar servicios en ejecución
docker compose ps
# Ejecutar un comando en un servicio
docker compose exec api sh
Puntos Clave
- ✅ Docker Compose define toda tu pila en un solo archivo
- ✅ Usa
depends_oncon health checks para un orden de inicio confiable - ✅ Usa archivos override para configuración específica de desarrollo
- ✅ Los volúmenes nombrados en la sección
volumespersisten datos