Apa itu Docker Compose?
Docker Compose memungkinkan kita mendefinisikan dan menjalankan multi-container application menggunakan satu file YAML. Sangat berguna untuk development environment yang butuh beberapa service sekaligus.
docker-compose.yml Dasar
services:
app:
build: .
ports:
- "3000:3000"
environment:
- NODE_ENV=development
- DB_HOST=db
depends_on:
- db
- redis
volumes:
- .:/app
- /app/node_modules
db:
image: postgres:16-alpine
environment:
POSTGRES_DB: myapp
POSTGRES_USER: admin
POSTGRES_PASSWORD: secret
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
postgres_data:
Command Docker Compose
# Start semua service (background)
docker compose up -d
# Build ulang dan start
docker compose up -d --build
# Stop semua
docker compose down
# Stop dan hapus volumes
docker compose down -v
# Lihat logs
docker compose logs -f app
# Exec command di container
docker compose exec app sh
docker compose exec db psql -U admin myapp
Environment Variables
# .env file otomatis dibaca oleh compose
# .env
DB_PASSWORD=secret123
# docker-compose.yml
services:
db:
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}