Episodio 16: Docker Compose para Aplicaciones Multicontenedor

Descubre Docker Compose y aprende a definir y ejecutar apps multicontenedor con un único archivo YAML. Guía rápida, ejemplos, comandos clave y buenas prácticas.

lunes, 8 de septiembre de 2025 • 3 min de lectura • Equipo Q2BSTUDIO

Inteligencia-Artificial-

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

NUESTROS SERVICIOS

Cómo podemos ayudarte

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.