🚀 Clase 6: Despliegue con Docker Compose#
Docker Compose es una herramienta que permite definir y ejecutar aplicaciones multi-contenedor. Con Compose podemos gestionar fácilmente la creación, configuración y conexión de múltiples servicios dentro de un entorno aislado y reproducible.
🔧 ¿Por qué usar Docker Compose?#
🌐 Reproducibilidad: Define entornos consistentes mediante archivos YAML.
⚙️ Gestión sencilla: Permite iniciar, detener y escalar servicios con comandos simples.
📦 Portabilidad: Facilita la ejecución del entorno en cualquier máquina con Docker instalado.
🔗 Conectividad: Gestiona redes y dependencias entre servicios automáticamente.
🗃️ Persistencia: Maneja fácilmente el almacenamiento persistente a través de volúmenes.
📄 Estructura básica del archivo docker-compose.yml
#
Un archivo docker-compose.yml
describe los servicios, redes y volúmenes necesarios para ejecutar tu aplicación:
services:
servicio-ejemplo:
image: ejemplo-imagen:latest
ports:
- "8080:80"
environment:
- EJEMPLO_VAR=valor
volumes:
- ejemplo-volumen:/ruta/del/contenedor
networks:
- ejemplo-red
volumes:
ejemplo-volumen:
networks:
ejemplo-red:
driver: bridge
▶️ Comandos frecuentes#
# Construir e iniciar servicios
docker-compose up --build
# Detener servicios
docker-compose down
# Ver estado de servicios
docker-compose ps
# Visualizar logs
docker-compose logs -f
Algunos parámetros clave que encontraremos típicamente en nuestro archivo de configuración de Docker Compose:
🐳 services
#
Define los servicios o contenedores que serán desplegados.
📦 image
#
La imagen Docker que se utilizará para crear el contenedor. Puede ser local o descargada desde Docker Hub u otro repositorio.
🔨 build
#
Si no se tiene una imagen previamente creada, indica que Docker debe construirla desde un Dockerfile
.
🚪 ports
#
Mapea puertos del contenedor al sistema local ("puerto-local:puerto-contenedor"
), permitiendo acceso externo.
🌱 environment
#
Permite definir variables de entorno dentro del contenedor.
📄 env_file
#
Carga variables de entorno desde un archivo externo (.env
).
💾 volumes
#
Gestiona la persistencia de datos montando directorios o archivos del sistema local dentro del contenedor.
🔗 depends_on
#
Especifica dependencias entre servicios. Un servicio espera que otro esté listo antes de iniciarse.
✅ healthcheck
#
Verifica regularmente que un servicio esté operativo. Es esencial para gestionar dependencias correctamente.
🌐 networks
#
Define redes internas para conectar y aislar los servicios del compose.
📌 Ahora que conocemos estos parámetros, profundicemos en cómo están aplicados específicamente en nuestro proyecto: 🔗 mini-proyecto-oic