¿Qué es Docker Compose?
¿Qué es Docker Compose?
Docker Compose es una herramienta que te permite definir y ejecutar aplicaciones con múltiples contenedores Docker. Mientras que Docker se encarga de contenedores individuales, Compose se especializa en orquestar varios contenedores que trabajan juntos.
El Problema que Resuelve
Imagina que tienes una aplicación web que necesita:
Un contenedor para tu aplicación (Node.js/Python/etc.)
Un contenedor para la base de datos (MySQL/PostgreSQL)
Un contenedor para cache (Redis)
Un contenedor para el servidor web (Nginx)
Sin Docker Compose, tendrías que ejecutar manualmente:
docker run -d --name database mysql
docker run -d --name redis redis
docker run -d --name app --link database --link redis mi-aplicacion
docker run -d --name nginx --link app nginxCon Docker Compose, defines todo en un archivo y ejecutas un solo comando.
Cómo Funciona
1. Archivo docker-compose.yml
Creas un archivo YAML que describe todos los servicios, redes y volúmenes:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
depends_on:
- app
app:
build: .
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgresql://user:pass@db:5432/mydb
depends_on:
- db
db:
image: postgres:13
environment:
POSTGRES_DB: mydb
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:2. Comandos Principales
# Iniciar todos los servicios
docker-compose up
# Iniciar en segundo plano
docker-compose up -d
# Detener todos los servicios
docker-compose down
# Ver logs
docker-compose logs
# Listar contenedores en ejecución
docker-compose ps
# Ejecutar un comando en un servicio específico
docker-compose exec app bashCaracterísticas Clave
✅ Ventajas Principales
Configuración centralizada: Todo en un archivo YAML
Dependencias automáticas: Los servicios se inician en el orden correcto
Variables de entorno: Fácil configuración para diferentes entornos
Redes aisladas: Los servicios se comunican de forma segura
Volúmenes compartidos: Persistencia de datos
🔧 Casos de Uso Comunes
Entornos de desarrollo locales
Testing de aplicaciones multi-servicio
Staging environments
Aplicaciones pequeñas/moderadas en producción
Ejemplo Práctico: WordPress con MySQL
version: '3.8'
services:
db:
image: mysql:8.0
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpresspass
wordpress:
image: wordpress:latest
ports:
- "8000:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpresspass
depends_on:
- db
volumes:
db_data:Docker Compose vs. Otras Herramientas
| Herramienta | Caso de Uso |
|---|---|
| Docker Compose | Desarrollo local, apps pequeñas |
| Docker Swarm | Clústeres pequeños-medianos |
| Kubernetes | Producción enterprise, alta escalabilidad |
Versiones Recientes
Docker Compose V1: Escrito en Python
Docker Compose V2: Reescrito en Go, integrado con CLI Docker
Ahora se usa principalmente como
docker compose(sin guión)
Conclusión
Docker Compose es esencial para desarrolladores porque:
Simplifica el trabajo con aplicaciones multi-contenedor
Facilita el onboarding de nuevos miembros del equipo
Permite versionar la configuración de infraestructura
Es perfecto para desarrollo y testing
Comentarios
Publicar un comentario