Runbook Compose: start, stop, debug, recover
Khi cả stack lỗi, tìm dependency gốc thay vì restart tất cả.
Nắm bản chất
docker compose ps -a, logs có timestamps và
docker compose config giúp tìm startup race, sai hostname, missing
secrets, mount error hoặc DB migration failure. Với one-shot migration, thành
công thường là exited(0), không phải trạng thái Running.
Khi muốn nâng cấp, cần backup database trước, chạy migration tương thích với app versions, rồi theo dõi health sau deploy. Một Compose deployment trên một VPS không tự thành high availability; downtime có thể xảy ra khi restart.
Luồng hoạt động
Hãy tự giải thích mỗi mũi tên: dữ liệu, quyền hoặc tín hiệu nào được truyền qua bước này?
Lệnh & cấu hình mẫu
docker compose config --quiet
docker compose ps -a
docker compose logs --since=10m --timestamps api db worker
docker compose restart worker
docker compose down # KHÔNG dùng -v khi chưa kiểm tra dữ liệu
Lệnh có placeholder hoặc phụ thuộc môi trường thì cần thay thông tin thực tế, kiểm tra quyền và chỉ thực hiện trên tài nguyên được phép.
Bài tập 10–20 phút
Giả lập Worker dừng bằng docker compose stop worker, tạo thêm
job rồi quan sát backlog. Khởi động Worker và chạy smoke test để kiểm tra
phục hồi.
Lỗi dễ mắc
Dừng DB để học thì chỉ thực hiện trên dữ liệu giả lập. Mọi
down -v, volume rm, pg_restore phải
được xem như hành động nguy cơ mất dữ liệu.
Tự kiểm tra
Khi migration job đã Exit(0), có nên tự restart liên tục không?Xem đáp án ↗
Không. Một one-shot job đã thành công cần giữ kết quả làm bằng chứng, không coi exited(0) là lỗi.
Học thêm qua lab
Có project thực hành đúng với chương này, kèm README và những giới hạn môi trường cần lưu ý.
↓ Tải mã nguồn thực hành chương 06Đối chiếu tài liệu gốc
Cú pháp và khả năng hỗ trợ có thể thay đổi theo phiên bản. Trước khi dùng Production, hãy kiểm tra tài liệu tương ứng.
Mở tài liệu chính thức ↗