¿Qué es Docker Compose?
Docker Compose es una herramienta que se basa en el concepto de definir una aplicación que consiste en múltiplos contenedores. Esto se logra a través de un archivo YAML, donde se especifican los servicios, redes y volúmenes requeridos. Cada aplicación se configura en un solo archivo, que generalmente se llama docker-compose.yml.
Ventajas de usar Docker Compose
- Facilidad de configuración: Permite definir múltiples contenedores y servicios en un único archivo.
- Consistencia: Asegura que el mismo entorno se utilice en desarrollo, pruebas y producción.
- Escalabilidad: Facilita la creación y gestión de aplicaciones que requieren varios componentes trabajando juntos.
Estructura básica de un archivo docker-compose.yml
El formato de un archivo docker-compose.yml se basa en la sintaxis YAML. Aquí tienes un ejemplo sencillo que ejecuta una aplicación web con un contenedor para la aplicación y otro para la base de datos:
version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
db:
image: postgres:latest
environment:
POSTGRES_DB: exampledb
POSTGRES_USER: user
POSTGRES_PASSWORD: password
Cómo iniciar Docker Compose
Iniciar una aplicación con Docker Compose es sencillo. Primero, asegúrate de que tu Docker esté instalado y en ejecución. Luego, sigue estos pasos:
- Crea un archivo llamado docker-compose.yml en tu directorio de proyecto.
- Define los servicios y configuraciones necesarias.
- Desde la terminal, navega al directorio donde se encuentra tu archivo docker-compose.yml.
- Ejecuta el siguiente comando:
docker-compose up
Este comando descargará las imágenes necesarias y levantará los contenedores especificados en el archivo.
Comandos útiles de Docker Compose
Además de docker-compose up, hay otros comandos importantes que facilitan el trabajo con Docker Compose:
- docker-compose down: Detiene y elimina todos los contenedores definidos en el archivo.
- docker-compose ps: Muestra el estado de los contenedores en funcionamiento.
- docker-compose logs: Proporciona los registros de salida de los servicios.
Manejo de volúmenes y redes en Docker Compose
Docker Compose permite gestionar volúmenes y redes de manera efectiva. Puedes definir volúmenes para persistir datos y redes para que los contenedores se comuniquen entre sí.
Ejemplo de un archivo con volúmenes y redes
version: '3'
services:
web:
image: nginx
volumes:
- ./html:/usr/share/nginx/html
networks:
- frontend
db:
image: postgres
volumes:
- pgdata:/var/lib/postgresql/data
networks:
- backend
networks:
frontend:
backend:
volumes:
pgdata:
Ejemplo práctico: Desplegando una aplicación simple
Veamos un ejemplo más elaborado que incluye una aplicación web y una base de datos:
version: '3'
services:
app:
build: .
ports:
- "3000:3000"
depends_on:
- db
db:
image: postgres:11
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydb
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
En este ejemplo, la aplicación se construye a partir de un Dockerfile y depende de una base de datos Postgres que se levanta automáticamente.
Conclusiones
Docker Compose es una herramienta poderosa para el manejo de aplicaciones multicontenedor. Proporciona una forma estructurada y sencilla de configurar, ejecutar y gestionar contenedores de Docker. Al facilitar el desarrollo y la orquestación de múltiples servicios, se convierte en un recurso invaluable para los desarrolladores y equipos de DevOps.

Deja una respuesta