Плагин имен контейнеров для администратора (утилита системного администратора)

Я рад поделиться этим плагином администратора Discourse, который добавляет имена контейнеров (указанные в основном файле yml приложения) во вкладку «Резервные копии» на странице администратора. Этот утилитарный плагин полезен для системных администраторов Discourse, работающих с многоконтейнерными конфигурациями и желающим сразу видеть, какой контейнер запущен.

СКРИНШОТ

Это простой плагин, и это мой первый «публичный» плагин, поэтому комментарии и pull-запросы (PR) для его улучшения очень приветствуются. Информация о контейнерах берётся из переменных окружения в файле yml, например:

  • DISCOURSE_CONTAINER_MAIN
  • DISCOURSE_CONTAINER_DATA

Мы запускаем несколько контейнеров одновременно, чтобы иметь возможность пересобирать контейнеры Discourse и переключаться на них без простоя (изменяя конфигурацию обратного прокси-сервера). Поэтому для нас было лучше зафиксировать это значение в файле yml, чем получать его из docker ps, поскольку docker ps не может определить, какой контейнер включён конфигурацией обратного прокси.

TODO

Мои навыки работы с Ember значительно уступают навыкам экспертов Discourse (я всё ещё пытаюсь освоить Ember), поэтому у меня возникли проблемы в двух областях. Следовательно, есть как минимум два открытых пункта TODO, и я буду рад получить PR, если кто-то заинтересуется:

  1. Когда приложение Discourse (GUI) запущено, и мы переключаем контейнеры (через изменение конфигурации обратного прокси), страницу необходимо перезагрузить (или отключить и снова включить плагин). Мне не удалось настроить автоматическое обновление вычисляемого свойства (я пробовал множество различных методов).

  2. Не удалось заставить I18N работать как ожидалось, поэтому элемент <span> зафиксирован в коде JS, а не вынесен в конфигурацию локали (хотя черновые плейсхолдеры уже есть).

Как уже упоминалось, pull-запросы приветствуются, так как я всё ещё новичок в создании плагинов для Discourse!

Комментарии и обновления также приветствуются здесь:

PR приветствуются!

8 лайков

Этот плагин выглядит очень полезным.
Спасибо!

3 лайка

Не знаю, как сделать Ember реактивным с вычисляемыми свойствами при переключении контейнеров через обратный прокси. Это действительно интересная тема, удачи вам в этом.

Только что попробовал: переключил контейнеры, изменив конфигурацию обратного прокси, и обновление произошло после отключения и повторного включения плагина.

В любом случае… спасибо за этот полезный плагин, @neounix.

С нетерпением жду будущих улучшений.

2 лайка

Спасибо. Но на практике эта утилита, вероятно, пригодна менее чем для 1% всех администраторов систем Discourse, поскольку большинство экземпляров Discourse (грубая оценка по постам на meta) работают в одном контейнере без обратного прокси (стандартная конфигурация, поддерживаемая Discourse).

Да, я пробовал множество различных способов, и проблема для меня, исходя из моего «крайнего нубизма» в плагинах Discourse, заключается в том, что я мог читать переменную окружения GlobalSetting из yml только в Ruby, тогда как остальная часть плагина написана на JavaScript.

Я также рассматривал переписывание плагина полностью на Ruby, но пока не пошел этим путем, так как надеюсь, что кто-то предложит лучшую идею или даже сделает PR с решением, позволяющим сделать информацию о контейнере реактивной в случае переключения обратного прокси, чтобы не требовалась перезагрузка приложения (переинициализация плагина).

Спасибо за комментарий.

2 лайка