Nhiệm vụ: Thêm tính năng khôi phục dự án MODX từ bản dump và tệp
Thêm tính năng khôi phục dự án MODX từ bản dump và tệp
Hỗ trợ triển khai MODX không chỉ qua cài đặt sạch, mà còn từ bản dump DB, tệp dự án hoặc snapshot đầy đủ.
Liên quan đến tác vụ /tasks/cmqtqmj0m004wp50uccwvo4zh.
Mục tiêu
Mở rộng modx-docker để nó có thể tái tạo các dự án MODX cũ (legacy) thực tế, thay vì chỉ thực hiện cài đặt sạch một phiên bản MODX cụ thể từ Git.
Kịch bản
Hỗ trợ ít nhất bốn chế độ:
- Cài đặt sạch — kịch bản hiện tại: checkout ref MODX cần thiết, DB trống, cài đặt tự động (unattended setup).
- Chỉ cơ sở dữ liệu — nhập bản dump SQL được cung cấp, còn tệp/core được chuẩn bị riêng.
- Chỉ tệp — sử dụng tập hợp tệp dự án được cung cấp, nhưng tạo DB mới/sạch.
- Snapshot đầy đủ — khôi phục cả tệp dự án và DB để tái tạo trang web chính xác nhất.
Yêu cầu
- Nguồn tệp và DB phải được thiết lập khai báo thông qua cấu hình/biến môi trường.
- Không sửa đổi các bản dump/archive nguồn; thực hiện bất kỳ thay đổi nào dành riêng cho môi trường trên bản sao làm việc.
- Sau khi khôi phục, chuẩn hóa môi trường: tham số kết nối DB, hostname/domain, đường dẫn tuyệt vời và các cài đặt khác cản trở việc chạy bên trong Docker.
- Nếu không có bản dump DB — thực hiện cài đặt MODX thông thường.
- Nếu thiếu core trong các tệp được cung cấp, hãy cung cấp khả năng lấy ref MODX cần thiết từ Git.
- Sau khi khôi phục, xóa bộ nhớ đệm (cache) và thực hiện kiểm tra độ sẵn sàng của môi trường.
- Không gắn kết việc triển khai chỉ với các phiên bản MODX/PHP/MySQL hiện đại: động lực chính là khả năng tái tạo các tổ hợp cũ (legacy).
Bối cảnh
Đối với MODX, phần lớn trạng thái dự án nằm trong DB (resources, templates, chunks, snippets, TVs, settings, thông tin gói), và một phần nằm trong hệ thống tệp (assets, components, mã tùy chỉnh, tệp Extras). Do đó, để tái tạo hoàn toàn một dự án thực tế, hệ thống cần có khả năng khôi phục độc lập hoặc kết hợp cả hai phần.
Trong tương lai, cơ chế này sẽ cho phép một agent nhận một trang web MODX cũ, tái tạo môi trường ban đầu của nó, nghiên cứu các điểm không tương thích và dần dần di chuyển dự án sang các phiên bản runtime mới hơn.