Мы успешно установили Discourse на Digital Ocean, всё работает отлично, но мы никак не можем найти, где находятся сами файлы Discourse. Мы хотели протестировать некоторые изменения и создать несколько плагинов, но не можем найти никаких файлов. Мы использовали Filezilla для входа на сайт. Однако мы не можем найти ни одного из файлов приложения Discourse нигде, например, в discourse/app. Мы зашли в папку var/discourse, но там пусто. Затем в var/discourse/containers — тоже ничего. Мы выполнили SSH, запустили .launcher, вошли в app и в терминале увидели, что наши файлы находятся в var/www, но этот каталог не существует при входе на сервер. Мы также проверили var/lib/docker/containers — там тоже ничего. Где именно находятся файлы Discourse? Спасибо.
Вот как работает Docker: фактические файлы находятся внутри контейнера Docker и поэтому «невидимы» для Filezilla.
Если вы хотите протестировать изменения в Discourse, например плагины и темы, вы не сможете сделать это в рабочей установке.
Для тем см. Beginner's guide to using Discourse Themes
Для плагинов см. Developing Discourse Plugins - Part 1 - Create a basic plugin
Есть ли другой способ установки, кроме использования Docker? Я прочитал все руководства, но разрабатывать с невидимыми файлами довольно сложно.
Парадигма сильно отличается от PHP-приложений 90-х, когда было нормой редактировать файлы на продакшн-серверах через FTP.
Изменения в поведении Discourse должны реализовываться в виде отдельных проектов, размещённых в собственных git-репозиториях, и использовать существующие API плагинов и тем.
Например, если вы хотите добавить дополнительное поле в редактор темы, где пользователь сможет указать предпочитаемый цвет, вы создадите новый плагин для Discourse, следуя руководству по адресу Developing Discourse Plugins - Part 1 - Create a basic plugin, затем разместите его на GitHub в репозитории с именем discourse-favorite-color и установите на свой экземпляр, следуя инструкции по адресу Install plugins on a self-hosted site
Хорошо, понял. Придется привыкнуть к новому способу разработки. Просто интересно: каждый раз, когда мы добавляем плагин, нужно выполнять ./launcher rebuild app? И делать то же самое снова при изменении плагина?
Да.
Однако это должно происходить нечасто, так как это ваша производственная установка.
Для целей разработки и тестирования в первой части статьи Developing Discourse Plugins - Part 1 - Create a basic plugin указано, что необходимо настроить «Среду разработки», где вы можете вносить изменения и тестировать их, просто обновляя браузер.
Я поступаю именно так, хотя также можно выполнить обновление через веб-интерфейс по адресу /admin/upgrade.
Кроме того, при установке с двумя контейнерами обновление можно выполнить следующим образом:
./launcher bootstrap web_only
./launcher destroy web_only; ./launcher start web_only
Таким образом, ваш сайт будет недоступен ровно столько, сколько потребуется новому серверу для запуска (около минуты).