コンテナ名管理プラグイン(システム管理者ユーティリティ)

Discourse 管理プラグインをご紹介できることを嬉しく思います。このプラグインは、メインアプリの yml ファイルで指定されたコンテナ名を、管理ページのバックアップタブに追加します。このユーティリティプラグインは、マルチコンテナ構成を実行し、一目でどのコンテナが実行中かを確認したい Discourse システム管理者に役立ちます。

スクリーンショット

これはシンプルなプラグインであり、私が初めて公開するプラグインでもあります。改善のためのコメントや PR を大歓迎します。コンテナ情報は、yml ファイルの環境変数から取得されます。例えば:

  • DISCOURSE_CONTAINER_MAIN
  • DISCOURSE_CONTAINER_DATA

私たちは複数のコンテナを同時に稼働させ、リバースプロキシ設定を変更することで、ダウンタイムゼロで Discourse コンテナを再構築し、切り替えることができます。そのため、docker ps から取得するのではなく、この値を yml ファイルにハードコードする方が、リバースプロキシの設定によってどのコンテナが有効化されているかを docker ps が判断できないという問題を防ぐため、私たちの場合には適切でした。

TODO

私の Ember のスキルは Discourse の専門家と比較して未熟です(まだ Ember を学習中ですので)。そのため、2 つの領域で問題が発生し、少なくとも 2 つの TODO が残っています。興味のある方は PR を歓迎します:

  1. Discourse アプリ(GUI)が実行中で、コンテナを切り替えた場合(リバースプロキシ設定の変更経由)、ページを再読み込みするか、プラグインを無効化して再度有効化する必要があります。計算プロパティが自動的に更新されるようにできませんでした(多くの異なる手法を試しましたが)。

  2. I18N が期待通りに動作しなかったため、<span> 要素は JS コードにハードコードされており、ロケール設定に配置されていません(ただし、ドラフトのプレースホルダーは用意されています)。

前述の通り、私はまだ Discourse プラグインの初心者ですので、PR を大歓迎します。

コメントとアップデートもこちらで歓迎します:

PR を歓迎します!

「いいね!」 8

このプラグインは本当に役立ちそうです。
ありがとうございます!

「いいね!」 3

リバースプロキシを介してコンテナが切り替えられた際、計算プロパティを使用して Ember をどのようにリアクティブにするかについては、私にはわかりません。確かに興味深いトピックですね。頑張ってください。

試しにやってみました。リバースプロキシ設定を変更してコンテナを切り替えたところ、プラグインをオフにしてオンにすることで更新されました。

とにかく…このユーティリティプラグインを提供してくださり、@neounix さん、ありがとうございます。

今後の改善を楽しみにしています。

「いいね!」 2

ありがとうございます。しかし実際には、このユーティリティはDiscourseのシステム管理者全体の1%未満にしか役立たないでしょう。なぜなら、ほとんどのDiscourseインスタンス(メタでの投稿からの大胆な推測ですが)は、リバースプロキシなしで単一のコンテナを実行しているからです(標準的なDiscourseがサポートする設定)。

はい、私はさまざまな方法を試しました。私の「極端な初心者レベル」に基づくと、Discourseプラグインにおいて、ymlからRubyでGlobalSetting環境変数しか読めず、プラグインの残りはJavaScriptで書かれていることが問題でした。

また、プラグインを100% Rubyに書き換えることも検討しましたが、まだその方向には進んでいません。なぜなら、誰かがより良いアイデアを持っているか、あるいはリバースプロキシの切り替えケースでコンテナ情報をリアクティブにする方法をPRしてくれることを期待しているからです。そうすれば、アプリの再読み込み(プラグインの再初期化)は不要になります。

コメントいただきありがとうございます。

「いいね!」 2