En el episodio anterior exploramos Docker Networking y cómo los contenedores se comunican entre sí. A medida que las aplicaciones crecen, orquestar múltiples contenedores con docker run se vuelve complejo. Aquí es donde Docker Compose entra en juego para simplificarlo todo.
Que es Docker Compose
Docker Compose es una herramienta que permite definir y ejecutar aplicaciones Docker multicontenedor. En lugar de iniciar cada contenedor manualmente, declaras servicios en un único archivo YAML llamado docker-compose.yml y levantas todo el stack con un solo comando.
Por que usar Docker Compose
- Gestión sencilla de múltiples contenedores en un único archivo
- Redes y volúmenes definidos de forma centralizada
- Entornos coherentes para todo el equipo y todas las máquinas
- Un solo comando docker compose up para iniciar toda la pila
Instalación de Docker Compose
La mayoría de instalaciones modernas de Docker ya incluyen Compose. Para comprobarlo ejecuta:
docker compose version
Si no está disponible, instala la versión correspondiente a tu sistema desde la documentación oficial de Docker.
Ejemplo básico de docker-compose.yml
Levantemos una app web sencilla con Flask y Redis:
version: 3
services:
web:
build: ./app
ports:
- 5000:5000
depends_on:
- redis
redis:
image: redis:alpine
Donde web es nuestra app Flask construida desde el directorio ./app, redis es un contenedor basado en la imagen oficial y depends_on asegura que redis arranque antes que web.
Ejecución de la app
docker compose up
Este comando inicia ambos contenedores. Para detener y limpiar el entorno:
docker compose down
Volúmenes y redes
También puedes definir almacenamiento persistente y redes personalizadas. Por ejemplo, para Postgres con un volumen persistente:
version: 3
services:
db:
image: postgres:alpine
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
Esto garantiza que los datos de la base de datos sobrevivan a reinicios del contenedor.
Ejemplo realista
Una app full stack típica podría incluir:
- Frontend React o Next.js
- Backend Node.js, Django o Flask
- Base de datos Postgres, MongoDB o MySQL
- Caché Redis
Todo definido en un único archivo docker-compose.yml para desarrollo local y pruebas integradas.
Comandos clave
- docker compose up -d inicia en modo desatendido
- docker compose down detiene y elimina contenedores y red por defecto
- docker compose logs -f sigue los registros en tiempo real
- docker compose ps lista los servicios en ejecución
Buenas prácticas
- Usa archivos .env para variables sensibles y configuración por entorno
- Mantén los servicios modulares: base de datos, caché, backend, frontend por separado
- Emplea volúmenes para datos persistentes
- Evita credenciales embebidas en docker-compose.yml y aplica secretos cuando sea posible
Cómo te ayuda Q2BSTUDIO
En Q2BSTUDIO diseñamos y operamos plataformas escalables con Docker y orquestación moderna para acelerar la entrega de aplicaciones a medida y software a medida. Nuestro equipo integra pipelines CI CD, observabilidad y seguridad desde el primer día, alineando infraestructura y producto para reducir tiempos de despliegue y mejorar la fiabilidad. Si buscas impulsar tu roadmap con un partner experto, descubre nuestro desarrollo de aplicaciones a medida y software a medida, así como nuestros servicios cloud AWS y Azure para entornos híbridos y multicloud. También somos especialistas en inteligencia artificial, ia para empresas y agentes IA, ciberseguridad, pentesting, servicios inteligencia de negocio y analítica avanzada con Power BI, siempre con un enfoque práctico y orientado a resultados.
Que viene en el siguiente episodio
En el Episodio 17 profundizaremos en Docker Volumes y la gestión de datos persistentes para asegurar que tu información sobreviva a reinicios y despliegues.
Pregunta para ti
Te gustaría que construyamos en el próximo episodio una app real multicontenedor con Docker Compose por ejemplo Node.js con MongoDB y Redis mostrando configuración, variables de entorno, salud y datos persistentes