Conecta varias piezas sin complicaciones: con Docker Compose como miniorquestador local, levantas un balanceo de cargas con nginx y múltiples servicios en minutos. Un único archivo docker-compose.yml centraliza puertos, redes y builds, ahorrando comandos y ofreciendo más control y personalización del despliegue.
¿Qué es Docker Compose y por qué acelera microservicios?
Docker Compose se ejecuta en local y es una excelente práctica para microservicios. No se limita a un contenedor: pueden ser veinticinco o más y se publican y organizan de forma coherente. Gracias a un archivo en YAML, defines qué despliegas y cómo, sin repetir configuraciones manuales. El resultado: menos fricción, más claridad y una sola línea para construir y levantar todo.
¿Cómo organiza múltiples contenedores y puertos?
- Define un servicio proxy basado en nginx que expone los puertos necesarios.
- Mantiene servicios de sitio uno, dos y tres sin puertos expuestos, atendidos por nginx en el proxy.
- Ajusta el archivo nginx.conf para que el upstream apunte a sitio uno, dos y tres e incluya el puerto interno de cada contenedor.
- Usa una red compartida para que proxy y sitios se comuniquen sin exponer más de lo necesario.
¿Cómo preparar carpetas y el archivo docker-compose.yml?
Primero organiza tu proyecto. Crea la carpeta Compose y copia las carpetas del ejercicio de balanceo de cargas (incluyendo el proxy y los sitios). Abre el archivo del proxy, nginx.conf, y actualiza el bloque de upstream para sitio uno, dos y tres, agregando el puerto de comunicación interna de cada contenedor. Luego, en la raíz, crea el archivo docker-compose.yml (nombre exacto) y define servicios, puertos y red.
- Carpeta base: Compose.
- Archivos clave: nginx.conf y docker-compose.yml.
- Servicios: proxy, sitio uno, sitio dos, sitio tres.
- Red compartida: una sola red para todos los servicios.
Ejemplo del bloque de nginx descrito:
# nginx.conf (fragmento)
upstream sitios {
server sitio1:PUERTO;
server sitio2:PUERTO;
server sitio3:PUERTO;
}
Estructura del archivo en YAML con lo esencial que se mencionó:
version: "3"
services:
proxy:
build: ./proxy
ports:
- "PUERTO_HOST:PUERTO_CONTENEDOR"
networks:
- red_balance
sitio1:
build: ./sitio1
networks:
- red_balance
sitio2:
build: ./sitio2
networks:
- red_balance
sitio3:
build: ./sitio3
networks:
- red_balance
networks:
red_balance: {}
# nombre: red balance; define aquí el tipo de red si aplica.
Claves de aprendizaje y habilidades:
- Crear y nombrar correctamente archivos: docker-compose.yml con nombre exacto.
- Configurar services, ports, build y networks en YAML.
- Editar nginx.conf para el balanceo de cargas entre múltiples backends.
- Organizar carpetas y reutilizar componentes previos para acelerar el setup.
¿Cómo ejecutar y verificar con Docker Compose?
Desde la terminal, cambia a la carpeta Compose y ejecuta el comando que compila y levanta todos los servicios en una sola pasada. Observa los logs: cada contenedor aparece con un color distinto, facilitando la lectura.
- Comando único para construir y desplegar.
docker-compose up --build
- Verifica en el navegador: abre localhost:8080 y comprueba la rotación entre la primera, segunda y tercera versión de la página.
- Beneficios directos: te ahorras muchos comandos manuales, centralizas la configuración en YAML y tienes más control sobre qué y cómo se despliega.
¿Te gustaría comentar cómo estructurarías más servicios o qué variables agregarías al YAML para tu caso?