Discourse を再コンパイル(最新バージョンへの更新)せずに、プラグインだけを再コンパイルすることは可能ですか?Discourse の更新が非常に頻繁にあり、更新のたびにプラグインが動作しなくなることがよくあります。Discourse の更新なしに再コンパイルしたいのですが、可能でしょうか?
もしどうしても必要だとお考えであれば、以下の「非公式な方法」で、お望みの「本質的な部分」を実現することができます。それは、(1) 独自のベースとなる Discourse Docker イメージを作成し、(2) フォークした Discourse の GitHub コードベースをビルドして実行する方法です。
その場合、以下の手順が必要です。
- Dockerfile を編集し、フォークした Discourse ソースリポジトリ を追加する
- ランチャースクリプトを編集し、代替のベース Docker イメージ を追加する
Discourse の Dockerfile には以下の行があります。
git clone https://github.com/discourse/discourse.git &&\
また、ランチャースクリプトには以下の行があります。
image="discourse/base:2.0.20200512-1735"
プライベートな Docker レジストリを運用している場合は、お好みの Discourse ベースイメージをそのレジストリにプッシュできます。例えば、以下のように設定します。
image="localhost:5000/base:2.0.20200512-1735"
同様に、Discourse をフォークしている場合は、上記の Dockerfile でそのフォークを使用できます。例えば、以下のようにします。
git clone https://github.com/your_git_account/discourse.git &&\
これにより、ベース Docker イメージとビルドコードの両方を管理しやすくなります。
もちろん、この方法は推奨されません。Discourse からのバグ修正、セキュリティ更新、機能更新などの恩恵を受けられなくなるためです。また、この方法はサポート対象外であり、推奨もされていません。
ご参考になれば幸いです、@Ed_Bobkov 様
注:この方法では、Discourse を再ビルドすることには変わりありません。ただし、(1) ベース Docker イメージのバージョンと、(2) Discourse の GitHub リポジトリのコードを制御できます。ただし、この方法はサポート対象外であり、推奨もされていないため、すべてご自身の責任となります(私の知る限りでは)。
関連記事:
非常に詳しい回答をありがとうございます!簡単な回避策ではないようですね。Discourse の更新を確認せずに再コンパイルするコマンドがないのは不思議です。
@Ed_Bobkov さん、こんにちは
はい、私が知らない「別の方法」が存在する可能性も十分にありますね
その点については、他の皆様にお任せします。
私は以前、この件について数日間取り組んでおり、多くの「試行錯誤」を繰り返した末に、これが「私が出し得た最善の答え」でした。
もしより簡単な方法があれば、ぜひ教えていただきたいのですが、Docker を頻繁に利用されている方にとっては、現在の説明も納得がいくものだと思います。
まず、イメージをビルドする必要があります。Discourse はベースイメージから開始し、それを修正します。本番環境(Docker)で新しいプラグインを追加する場合、一般的にはコンテナを再構築する必要があります。そのため、上記のように回答しました。
Discourse のシステム管理については、私よりもはるかに詳しい方が多くいらっしゃいます。もしかすると、あなたが探している内容に沿った、より良いアイデアをお持ちの方がいるかもしれません。
では、よろしくお願いいたします!
Discourse のバージョンを更新せずにプラグインのみを更新したい場合は、オンラインダッシュボードからアクセスできる Docker Manager のアップグレードコンソールを使用し、対象のプラグインに対応するアップグレードボタンをクリックしてください。例:
https://your-site/admin/upgrade
注意点 #1:これはパブリックアセット(オープンソースプラグインなど)でのみ機能すると思われます。ビルドスクリプトに埋め込まれたデプロイキーでアクセスするプライベートアセットの場合は、プロジェクト全体を再構築する必要があるかもしれません。
注意点 #2:多くのプラグイン更新は、最新の Discourse ビルドとの互換性を追加するためにデプロイされます。多くの場合、両方を最新バージョンにアップグレードするのが妥当です。なぜなら、一部のアップグレードは古いバージョンの Discourse との互換性を破壊する可能性があるためです。ただし、これはあなたの用途によります。
