Rất nhiều team dùng Docker Compose để chạy production vì nhanh và gọn, nhưng sau vài tháng thì bắt đầu gặp các lỗi quen thuộc: restart không kiểm soát, log phình disk, backup thiếu quy trình, rollback lúng túng. Nếu anh đang vận hành stack nhỏ-vừa, bài này là checklist thực chiến để Compose chạy ổn định hơn.
Khi nào nên dùng Docker Compose cho production?
- Dịch vụ từ nhỏ đến vừa, không cần orchestration phức tạp
- Team vận hành gọn, ưu tiên tốc độ triển khai
- Có quy trình backup + monitoring cơ bản
Compose file nên có những gì?
services:
app:
image: myapp:latest
restart: unless-stopped
env_file:
- .env
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 30s
timeout: 5s
retries: 3
logging:
driver: json-file
options:
max-size: "20m"
max-file: "5"
depends_on:
db:
condition: service_healthy
Ba điểm hay bị bỏ quên: restart policy, healthcheck và giới hạn log size. Đây là những thứ giúp giảm downtime lặt vặt rất rõ.
Quy trình deploy an toàn
- Pull image mới + kiểm tra changelog
- Backup dữ liệu trước khi up
- Deploy có kiểm soát:
docker compose up -d - Check health + log 10-15 phút sau deploy
Troubleshooting lỗi thường gặp
- Container chạy nhưng app lỗi: xem healthcheck và env
- Disk đầy nhanh: siết log rotate / cleanup image cũ
- Service phụ thuộc fail dây chuyền: dùng depends_on + healthcheck
- Rollback chậm: không có version tag rõ ràng cho image
Checklist production ngắn gọn
- Image pin theo version
- Log có max-size/max-file
- Backup có lịch và test restore
- Monitoring CPU/RAM/disk + alert cơ bản
- Runbook deploy/rollback rõ ràng
Kết luận
Docker Compose vẫn dùng rất tốt cho production nếu anh có kỷ luật vận hành. Chỉ cần chuẩn hóa checklist từ đầu, hệ thống sẽ ổn định hơn và xử lý sự cố cũng nhẹ đầu hơn nhiều.
