Deploy, rollback và dữ liệu bền vững
Thực hành vòng đời release không làm hỏng database.
Nắm bản chất
Một deployment production-style cần release artifact xác định, preflight checks, backup có thể restore, migrations tương thích, smoke test và rollback trigger. Single-VPS Docker Compose deployment không phải zero-downtime hay HA tự nhiên.
Tách image rollback khỏi database rollback. Nếu schema migration đã xóa column cũ, đổi image về phiên bản trước chưa chắc chạy. Ưu tiên expand-and-contract migrations và kiểm tra rollback path trước release.
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 -f compose.prod.yaml config --quiet
docker compose -f compose.prod.yaml pull
docker compose -f compose.prod.yaml up -d --no-build
docker compose -f compose.prod.yaml ps
curl -fsS http://127.0.0.1:8088/api/health/ready
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
Viết release checklist có người phê duyệt, image digest, backup file, smoke test và dấu hiệu rollback. Thực hành chỉ trên VPS lab có dữ liệu giả lập.
Lỗi dễ mắc
Không dùng docker compose down -v trong rollback. Không restore
database về snapshot cũ khi chưa tính đến giao dịch mới vừa phát sinh.
Tự kiểm tra
Rollback image có tự đảo ngược migrations không?Xem đáp án ↗
Không. Database schema/data cần chiến lược backward compatibility hoặc restore riêng.
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 08Đố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 ↗