CHƯƠNG 06 · Docker Compose thực chiến•BÀI 24 / 80

Runbook Compose: start, stop, debug, recover

Khi cả stack lỗi, tìm dependency gốc thay vì restart tất cả.

Ứng dụng◷ 4 phút đọc4/4 trong chương

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

Observe→isolate→recover→verify

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.

TÀI NGUYÊN ĐI KÈM

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
NGUỒN CHÍNH THỨC

Đố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 ↗