Hướng dẫn di chuyển (Migration Guide) 🚚
Việc chuyển đổi dự án từ một công cụ phát triển local khác sang Govard được thiết kế để diễn ra liền mạch. Govard hiểu các cấu hình từ các công cụ phổ biến như Warden hay DDEV và có thể tự động thực hiện quá trình chuyển đổi mà không làm mất dữ liệu.
Tài liệu này hướng dẫn bạn cách di chuyển một dự án hiện có (ví dụ: từ Warden) sang Govard.
Di chuyển từ Warden sang Govard
Khi chuyển đổi một dự án từ Warden, các mục tiêu chính là:
- Ánh xạ các phiên bản PHP/Node/Database tương ứng sang hệ sinh thái của Govard (
.govard.yml). - Đảm bảo không mất dữ liệu bằng cách sao chép Docker volume Database.
- Dọn dẹp các tệp tạm thời/cache chứa các đường dẫn bị hardcode.
Bước 1: Dừng môi trường Warden
Trước khi bắt đầu di chuyển, hãy đảm bảo môi trường cũ đã được dừng hẳn để tránh ghi đè làm hỏng dữ liệu trong quá trình đồng bộ database.
cd /path/to/your/project
warden env stopBước 2: Xóa Caches của ứng dụng
Mặc dù đường dẫn ứng dụng của Warden và Govard trong container có thể giống nhau (ví dụ /var/www/html), nhưng Redis hoặc file-based cache sinh ra khi chạy Warden có thể gây lỗi nếu chúng kỳ vọng các biến môi trường nội bộ hoặc trạng thái cấu hình khác nhau.
Đối với dự án Magento 2, hãy xóa các thư mục code/cache được sinh ra tự động:
rm -rf var/cache/* var/page_cache/* generated/code/*Bước 3: Chạy lệnh di chuyển tự động của Govard
Chạy lệnh govard init với cờ --migrate-from warden.
Govard sẽ parse cấu hình file .env (các biến của Warden) và .warden/warden-env.yml để tự động đề xuất profile runtime phù hợp nhất. Đối với các dự án Magento 2, Magento 1 và OpenMage, Govard cũng di chuyển giá trị WARDEN_TABLE_PREFIX của Warden vào .govard.yml dưới dạng table_prefix.
govard init --migrate-from wardenTrong quá trình này:
- Govard sẽ tạo file
.govard.ymlánh xạ các cấu hình Warden của bạn sang stack của Govard. - Nó sẽ tự động phát hiện volume database Warden của bạn (thông thường là
<project>_dbdata). - Nếu
WARDEN_TABLE_PREFIXđược thiết lập, Govard sẽ lưu giữ nó dưới dạngtable_prefixđể các bảng Magento nhưdemo_core_config_datatiếp tục hoạt động bình thường. - Bạn sẽ nhận được prompt hỏi:
Do you want to clone the existing database volume from Warden ('myproject_dbdata') into Govard? [y/N] - Nhập
y(Yes). Govard sẽ tự động sao chép dữ liệu raw SQL sang một docker volume cô lập riêng của nó.
(Lưu ý: Việc clone database sử dụng lệnh raw cp -a được mount bên trong Docker, giúp đảm bảo các file permission được giữ nguyên hoàn toàn bảo mật và quá trình này hoàn tất chỉ trong vài giây, bỏ qua các pipeline mysqldump chậm chạp).
Bước 4: Khởi động môi trường mới
Sau khi các cấu hình đã được phân tích và database được clone an toàn, bạn chỉ cần khởi động Govard:
govard env upĐợi cho đến khi bạn thấy thông báo ✅ php runtime is ready.
Bước 5: Đồng bộ sau khi di chuyển (Tùy chọn)
Vì Govard kết nối trực tiếp qua app/etc/env.php (trên Magento), bạn nên cập nhật tự động các chuỗi kết nối bằng injector cấu hình tích hợp sẵn của Govard:
govard config autoNếu bạn sử dụng Elasticsearch/OpenSearch, hãy nhớ rằng các volume index tìm kiếm không được di chuyển tự động (chỉ di chuyển các cơ sở dữ liệu quan hệ chính như MariaDB/MySQL). Bạn nên tiến hành re-index lại dữ liệu thông qua framework của bạn:
govard tool magento indexer:reindexBước 6: Dọn dẹp Warden (Tùy chọn)
Sau khi bạn xác nhận tên miền .test hoạt động mượt mà và Admin Panel tải cực nhanh, bạn có thể gỡ bỏ hoàn toàn Warden để giải phóng dung lượng ổ cứng SSD:
warden env down -vDi chuyển Database thủ công
Nếu bạn đã bỏ qua prompt gợi ý tự động trong khi chạy govard init, bạn vẫn luôn có thể clone volume database thủ công vào bất kỳ lúc nào!
Hãy đảm bảo container DB của Govard đã được dừng trước:
govard env stop dbSau đó chạy lệnh clone thủ công, chỉ định tên Docker volume cũ của bạn:
govard db clone-volume <source_volume_name>Ví dụ đối với Warden:
govard db clone-volume warden_myproject_dbdataVí dụ đối với DDEV:
govard db clone-volume ddev-myproject-db