Файлы приложения после настройки Digital Ocean

Мы успешно установили 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

Таким образом, ваш сайт будет недоступен ровно столько, сколько потребуется новому серверу для запуска (около минуты).