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