У меня возникло несколько случайных идей, и одна из них — плагин для установки плагинов. Это требует пересборки форума. Можно ли выполнить пересборку с помощью Ruby? Мне совсем не хочется пробовать:
p `cd ../../`
p `. /launcher rebuild app`
У меня возникло несколько случайных идей, и одна из них — плагин для установки плагинов. Это требует пересборки форума. Можно ли выполнить пересборку с помощью Ruby? Мне совсем не хочется пробовать:
p `cd ../../`
p `. /launcher rebuild app`
При стандартной установке Discourse (и, следовательно, плагины) работают внутри контейнера Docker. Этот контейнер не имеет полного доступа к файловой системе хоста, поэтому он не может получить доступ к директории /var/discourse на хосте для изменения app.yml или запуска launcher.
И даже если бы мог… здесь возникает небольшая циклическая зависимость. Выполнение ./launcher rebuild приведёт к остановке контейнера Docker… что, в свою очередь, остановит процесс launcher rebuild, запущенный из плагина ![]()
Существуют потенциальные решения. Например, добавление дополнительных монтирований томов Docker, чтобы доступ к config/launcher мог осуществляться изнутри контейнера. Однако это не тривиальная задача.
Насколько я помню, кто-то когда-то создал плагин «менеджер плагинов»… который требовал некоторых изменений в app.yml, например, для добавления монтирования тома. Но сейчас я не могу найти никаких тем об этом, поэтому предполагаю, что он больше не поддерживается. Возможно, кто-то другой сможет поделиться ссылкой, если найдёт её? (Или, может быть, это всё было сном
)
Со стороны CDCK мы определённо склоняемся к использованию тем, когда хотим, чтобы клиенты могли устанавливать, обновлять и удалять их по своему усмотрению. Произвольная установка плагинов пользователями не является вариантом, поскольку это повлияет на других клиентов, работающих на том же сервере.
Да, вот она:
Хм… Понятно.
Ой, упс, я об этом не подумал!
Dashboard.literatecomputing.com устанавливает и удаляет плагины, редактируя файл app.yml (или web_only.yml) и выполняя пересборку (фактически: bootstrap, destroy, rebuild). При установке с двумя контейнерами время простоя минимально.
Также выполняются такие задачи, как обновление Docker и PostgreSQL, очистка Docker (docker prune) и другие. Поскольку система управляет стандартной установкой, вы не привязаны к ней, и она не может ничего сломать, если не выполняет активных действий (например, установку некорректного плагина).
Это (частный) плагин для Discourse, который запускает playbook Ansible. Вы можете присоединиться к группе бесплатной пробной версии и использовать его бесплатно (с ограниченной поддержкой).
Похоже, этот плагин просто клонирует репозиторий в директорию /plugins. Интересно.
Установщик ProCourse был потрясающим! Жаль, что он создал проблемы для некоторых плагинов.
Вы можете сделать что-то подобное внутри контейнера, чтобы добавить плагин в существующий контейнер:
cd /var/www/discourse/plugins
git clone my-plugin-url
rake db:migrate assets:precompile
sv restart unicorn
Однако остаются проблемы с хранением плагинов внутри контейнера и в app.yml при следующей пересборке.
Меня не раз подводило выполнение ./launcher destroy app; ./launcher start app для применения новых переменных окружения из app.yml, только чтобы обнаружить, что «новый» контейнер отстает от версии базы данных. Это еще хуже, если кто-то обновил только некоторые плагины в контейнере, которые работали с версией Discourse, находившейся в старом контейнере, но не работают с той, которую вы получаете при пересборке…
Вот почему плагин ProCouese только клонировал репозитории, и удалить его можно только через страницу этого плагина, выполнив rm -rf для клонированной папки плагина.
На самом деле он довольно хорошо работал как доказательство концепции. Однако его можно немного доработать, так как было отмечено, что он может усложнить устранение неполадок. Возможно, стоит добавить информацию о командной строке о том, как получить доступ к установщику ProCourse. Также, возможно, потребуется более качественный файл журнала.
Плюс в том, что можно отключить все плагины, просто удалив или закомментировав ProCourse Installer. Хотя сейчас он сломан.
У Джо есть очень передовые идеи. Если не ошибаюсь, он создал исходный плагин для голосования в постах?