Docker Compose: Orquestrando Containers πΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DOCKER COMPOSE OVERVIEW β
β β
β Services β Networks β Volumes β Environment β Dependencies β
β β
β Development β Testing β Production β CI/CD β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
O que é Docker Compose? π€ Docker Compose é uma ferramenta para definir e executar aplicações Docker multi-container. Com um único arquivo YAML, você configura todos os serviços da sua aplicação e, com um único comando, cria e inicia todos os serviços.
Anatomia do docker-compose.yml
version: "3.8"
services:
web:
build: ./web
ports:
- "8000:8000"
depends_on:
- db
db:
image: postgres:15
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
Conceitos Fundamentais π 1. Services Cada container que compõe sua aplicação.
services:
frontend:
image: nginx:alpine
ports:
- "80:80"
backend:
build: ./backend
environment:
- NODE_ENV=development
2. Networks Redes que conectam seus containers.
services:
api:
networks:
- backend-network
networks:
backend-network:
driver: bridge
3. Volumes Armazenamento persistente para seus dados.
services:
db:
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
Exemplo Completo: Stack Web π
version: "3.8"
services:
frontend:
build:
context: ./frontend
dockerfile: Dockerfile.dev
ports:
- "3000:3000"
volumes:
- ./frontend:/app
- /app/node_modules
environment:
- REACT_APP_API_URL=http://api:5000
depends_on:
- api
api:
build: ./backend
ports:
- "5000:5000"
environment:
- DATABASE_URL=postgres://user:pass@db:5432/dbname
depends_on:
- db
db:
image: postgres:15-alpine
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=pass
- POSTGRES_DB=dbname
volumes:
- pgdata:/var/lib/postgresql/data
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
pgdata:
networks:
default:
driver: bridge
Comandos Essenciais π οΈ
# Iniciar todos os serviΓ§os
docker-compose up
# Modo detached (background)
docker-compose up -d
# Parar todos os serviΓ§os
docker-compose down
# Reconstruir imagens
docker-compose build
# Logs
docker-compose logs -f
# Status dos serviΓ§os
docker-compose ps
Waifu Docker Compose Tips π‘ Padrões Comuns π― 1. Development Environment
services:
app:
build: .
volumes:
- .:/app
command: npm run dev
2. Testing Setup
services:
test:
build:
context: .
target: test
command: npm test
3. Production Configuration
services:
app:
image: myapp:latest
restart: always
environment:
- NODE_ENV=production
Boas Práticas β¨ Versionamento
Organização
Segurança
Performance
Use build cache
Otimize dependências
Configure healthchecks
Checkpoint β
Você agora domina:
[x] Estrutura básica do docker-compose.yml
[x] Configuração de serviços
[x] Redes e volumes
[x] Variáveis de ambiente
[x] Comandos essenciais
[x] Padrões comuns
[x] Boas práticas
Recursos Adicionais π Sensei's Note: "Docker Compose é como um maestro - coordena todos os instrumentos (containers) para criar uma sinfonia perfeita! π΅"
16 abril 2025