Triển khai Docker Compose trên Linux server production với checklist vận hành

Checklist Docker Compose production giúp giảm downtime

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.

Leave a Comment

Your email address will not be published. Required fields are marked *