Lo que aprenderas en este tutorial
✓ Fundamentos de Docker Compose
✓ Definicion de servicios
✓ Redes y volumenes
✓ Gestion de variables de entorno
✓ Ejemplos de configuracion practica
Step 1: compose.yaml basico
# compose.yaml
services:
web:
build: .
ports:
- "3000:3000"
environment:
- NODE_ENV=development
volumes:
- .:/app
- /app/node_modules
depends_on:
- db
db:
image: postgres:16
environment:
POSTGRES_DB: myapp
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
volumes:
postgres_data:
Step 2: Dockerfile
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "run", "dev"]
Step 3: Comandos basicos
# Iniciar
docker compose up -d
# Ver logs
docker compose logs -f web
# Detener
docker compose down
# Reconstruir
docker compose up -d --build
# Lista de servicios
docker compose ps
Step 4: Configuracion para produccion
# compose.prod.yaml
services:
web:
build:
context: .
dockerfile: Dockerfile.prod
restart: always
environment:
- NODE_ENV=production
nginx:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- web
docker compose -f compose.prod.yaml up -d
Step 5: Ejemplo de entorno combinado
services:
app:
build: .
ports:
- "3000:3000"
depends_on:
- db
- redis
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: password
volumes:
- db_data:/var/lib/postgresql/data
redis:
image: redis:alpine
ports:
- "6379:6379"
adminer:
image: adminer
ports:
- "8080:8080"
volumes:
db_data:
Resumen
Con Docker Compose puedes construir y compartir facilmente entornos de desarrollo. Gestiona declarativamente las dependencias entre servicios y las redes.
← Volver a la lista