Задача: Добавить восстановление MODX-проекта из дампов и файлов
Добавить восстановление MODX-проекта из дампов и файлов
Поддержать развёртывание MODX не только через чистую установку, но и из дампа БД, файлов проекта или полного snapshot.
Связано с задачей /tasks/cmqtqmj0m004wp50uccwvo4zh.
Цель
Расширить modx-docker, чтобы он мог воспроизводить реальные legacy MODX-проекты, а не только выполнять чистую установку конкретной версии MODX из Git.
Сценарии
Поддержать как минимум четыре режима:
- Чистая установка — текущий сценарий: checkout нужного MODX ref, пустая БД, unattended setup.
- Только база — импортировать предоставленный SQL dump, а файлы/ядро подготовить отдельно.
- Только файлы — использовать предоставленный набор файлов проекта, но создать новую/чистую БД.
- Полный snapshot — восстановить и файлы проекта, и БД для максимально точного воспроизведения сайта.
Требования
- Источники файлов и БД должны задаваться декларативно через конфигурацию/переменные окружения.
- Исходные dump/archive не изменять; любые environment-specific изменения выполнять уже над рабочей копией.
- После восстановления нормализовать окружение: параметры подключения к БД, hostname/domain, абсолютные пути и другие настройки, мешающие запуску внутри Docker.
- Если дампа БД нет — выполнять обычный MODX setup.
- Если core отсутствует в предоставленных файлах — предусмотреть возможность получить нужный MODX ref из Git.
- После восстановления очищать кэш и выполнять проверки готовности окружения.
- Не привязывать реализацию только к современным версиям MODX/PHP/MySQL: основной мотив — возможность воспроизводить legacy-комбинации.
Контекст
Для MODX значительная часть состояния проекта живёт в БД (resources, templates, chunks, snippets, TVs, settings, сведения о пакетах), а часть — в файловой системе (assets, components, кастомный код, файлы Extras). Поэтому для полноценного воспроизведения реального проекта нужно уметь независимо или совместно восстанавливать обе части.
В перспективе этот механизм должен позволять агенту получить старый MODX-сайт, воспроизвести его исходное окружение, исследовать несовместимости и постепенно мигрировать проект на более новые версии runtime.