MODX + Docker

Всем привет!

Увидел тут в комментариях к одной заметке вопрос про MODX в Docker. Так уж совпало, что я как раз недавно освоил работу с Docker для своих проектов на Vesp, и Pixmill попросили меня сделать что-то такое же и для MODX.



Вызов был принят — и вот результат github.com/bezumkin/modx-docker, можете использовать. Ниже будут пояснения.

Директории


assets — здесь находятся исходники фронтенда, которые собираются через Webpack и кладутся внутрь modx/assets/app.
docker — здесь все настройки, скрипты, логи и БД проекта.
modx — ну а здесь сам MODX, который монтируется внутрь контейнера с PHP.
dist — директория появится при сборке проекта для выгрузки на хостинг.

Установка


Я проверял работу только на MacOS, поэтому все инструкции для него.

Если у вас еще нет докера, то надо установить через Homebrew:
brew install docker --cask

Скачиваем исходники проекта в директорию NewProject:
git clone https://github.com/bezumkin/modx-docker.git ./NewProject

Переходим в рабочую директорию и готовим настройки
cd ./NewProject/docker
cp .env.dist .env

В настройках можно переименовать COMPOSE_PROJECT_NAME, чтобы указать уникальное имя проекта внутри Docker. По умолчанию там modx.

Всё готово, можно запускать контйнеры:
./start.sh
По умолчанию проект запускается в фоновом режиме, но вы можете отслеживать его работу в интерфейсе Docker Desktop. Для остановки нужно выполнить ./stop.sh

Установка MODX


Я приготовил несколько полезных скриптов для автоматизации работы с проектом.

Устанавливаем MODX:
./modx-install.sh
Там всё автоматизированно, никаких вопросов задавать не будут, на предупреждение в консоли не обращайте внимание.

После установки вы получите уже полностью рабочий сайт, доступный по адресу 127.0.0.1:8080. На фронтенде откроется демо-страничка Bootstrap 5. Из дополнений будут установлены только Ace и pdoTools.

Для входа в админку (http://127.0.0.1:8080/manager/) используйте логин admin и пароль adminadmin.

Логика работы


Исходники вашего фронтенда находятся в assets, там всё настроено для работы с Bootstrap 5 через Webpack 5. Все настройки вы можете поменять.

Вместе со скриптами и стилями собирается и manifest.json, который будет прочитан встроенным плагином Assets, чтобы подключить собранные файлы.

Когда контейнеры запущены, node работает в dev режиме с перезагрузкой страницы при изменении исходников.

Кликните, чтобы посмотреть GIFку на 2.2 мб


Для работы с MODX используется всем известный Gitify. С его помощью содержимое системы выгружается в файлы для сохранения в Git.

Заключение


Для получения файлов для выгрузки на хостинг вам нужно выполнить
./modx-build.sh

Этот скрипт
  1. Сделает бэкап БД
  2. Сохранит элементы и ресурсы в статические файлы
  3. Соберёт фронтенд в production режиме (минификация и всё такое)
  4. И положит это всё в директорию dist


Дальше вы можете выгрузить содержимое dist на хостинг и развернуть там с помощью Gitify. Наверное, можно даже автоматизировать этот процесс с помощью CI/CD, но я не пробовал, потому что парни из Pixmill разрешают своим клиентам менять всякое в админках сайтов прямо на хостинге. Это ж MODX, тут так принято.

Понятное дело, что вы можете (и должны!) сами настроить себе modx/.gitify под проект, чтобы синхронизировать только нужное. Но это уже сами разбирайтесь, заметка не про работу с Gitify.

Надеюсь всем желающим засунуть MODX в Docker теперь будет немного проще это сделать!
Василий Наумкин
15 ноября 2022, 07:09
modx.pro
8
2 109
+22

Комментарии: 6

Роман
15 ноября 2022, 09:25
+1
Я обычно еще phpmyadmin добавляю, но это на любителя. Единственное, в чем возникла проблема с ssl сертификатом. Так и не получилось, его подключить.
phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    environment:
      - VIRTUAL_HOST=phpmyadmin.loc
      - PMA_HOST=mysql
      - PMA_USER=root
      - PMA_PASSWORD=55555555
    networks:
      - frontend
      - backend
    Василий Наумкин
    15 ноября 2022, 09:39
    +1
    Порт 3333 от MariaDB открыт наружу, так что можно подключаться любым удобным ПО.

    Я использую PhpStorm:
      Роман
      15 ноября 2022, 09:42
      0
      Спасибо, понял.
        Алексей Соин
        15 ноября 2022, 20:33
        0
        как бесплатную альтернативу можно ещё использовать DBearer, а так да, DataGrip и PHPStorm отлично справляются со всеми задачами.
      vectorserver
      15 ноября 2022, 11:43
      0
      @Василий Наумкин Bellissimo!!!
      По идее на этапе установки, можно choice прикрутить для настроек входа в систему.

        Василий Наумкин
        15 ноября 2022, 13:10
        +2
        Да, конечно — можно и в переменные .env запихать.

        Изначально там вместо скачивания MODX и запуска установки из консоли был просто gitify modx:install — который как раз задавал кучу вопросов.

        А потом я это дело ускорил консольным установщиком, который сам же добавил во времена работы над MODX 3 =)
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        6