Docker Compose
Docker Compose es una herramienta para definir y ejecutar aplicaciones Docker multi-contenedor usando archivos YAML para configurar los servicios de la aplicación.
¿Qué es Docker Compose?
Docker Compose permite definir una aplicación completa con múltiples contenedores en un solo archivo, facilitando el desarrollo y despliegue de aplicaciones complejas.
Archivo docker-compose.yml
Configuración Básica
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| version: '3.8'
services:
web:
build: .
ports:
- "5000:5000"
environment:
- FLASK_ENV=development
depends_on:
- db
db:
image: postgres:13
environment:
- POSTGRES_DB=myapp
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
|
Servicios Complejos
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
| version: '3.8'
services:
nginx:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./ssl:/etc/nginx/ssl
depends_on:
- web
- api
web:
build: ./web
environment:
- NODE_ENV=production
volumes:
- ./web:/app
api:
build: ./api
environment:
- DATABASE_URL=postgresql://user:pass@db:5432/myapp
depends_on:
- db
db:
image: postgres:13
environment:
- POSTGRES_DB=myapp
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
volumes:
- postgres_data:/var/lib/postgresql/data
redis:
image: redis:alpine
volumes:
- redis_data:/data
volumes:
postgres_data:
redis_data:
|
Comandos Principales
Gestión de Servicios
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| # Iniciar servicios
docker-compose up
# Iniciar en segundo plano
docker-compose up -d
# Detener servicios
docker-compose down
# Ver logs
docker-compose logs
# Ejecutar comando en servicio
docker-compose exec web bash
|
Desarrollo
1
2
3
4
5
6
7
8
| # Reconstruir servicios
docker-compose build
# Escalar servicios
docker-compose up --scale web=3
# Variables de entorno
docker-compose --env-file .env up
|
Conceptos Relacionados
Referencias