Rubyのアップデートができず、./launcher rebuild appが繰り返し失敗します。

こんにちは。

最近、Docker Discourse がインストールされているサーバーイメージを移行しました。
すべてを起動できますが、SSL 証明書を再発行する必要があります。

古いサーバーには SSL が構成されていたため、このガイド の提案に従って ./launcher rebuild app を実行しています。

これにより、Docker は多くのものをプルして更新します。現在のイメージは Discourse 2.6.0.beta3 - https://github.com/discourse/discourse version 29f7e0689f61c5d85960a88f741ac3abced12d3e です。

初めて実行したときに Postgres アップグレードのメッセージが表示されたため、指示に従って再度 ./launcher rebuild app を実行しました。

今では、Ruby のバージョンが不足しているというエラーのため、毎回失敗し続けていると思われます。

ERROR:  Error installing bundler:
	bundler-2.5.3 requires Ruby version >= 3.0.0. The current ruby version is 2.7.2.137.

以下は完全な出力です。

FAILED

--------------------

Pups::ExecError: cd /var/www/discourse && gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,""); print $0 }' Gemfile.lock) failed with return #<Process::Status: pid 304 exit 1>

Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'

exec failed with the params {"cd"=>"$home", "hook"=>"web", "cmd"=>["gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,\\\"\\\"); print $0 }' Gemfile.lock)", "find $home ! -user discourse -exec chown discourse {} \\+"]}

2ad07f29ace1b5396d9944fc4fc5a1ec712727280e8bb3df760367d08bfe6a25

** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.

Docker は必要に応じて Ruby のバージョンを更新すると思っていました。

コンテナに手動でログインし、RVM をインストールして Ruby v3+ をアクティブ化しましたが、同じエラーが引き続き発生します。

この段階で少し途方に暮れています。インストールされているバージョンが ./launcher でアップグレードするには古すぎるのでしょうか?

どのようなアドバイスでもいただけると幸いです。

これはエラーではありません。実際のエラーはさらに上にあります。

「いいね!」 2

新しいイメージから始めて、標準的なインストールを実行することをお勧めします。

「いいね!」 1

ジェイ、ありがとう。それが唯一の解決策かもしれないと恐れていました。

データベースをコピーする方法を見つけて、すべてを失わないようにしなければならないと思います。

apt upgrade を使用してすべてのパッケージを更新してみてください

難しくありません。バックアップを作成するか、rsync を使用して Discourse サイトを別の VPS に移動することができます。既存のサイトはそのまま残るので、失うものは何もありません。これが最も安全な方法です。

「いいね!」 1

サーバーのUbuntuバージョンを更新し、ruby v3.1が実行されていることを確認するなど、可能な限りすべてを更新しました。

問題は、dockerによって制御されているコンテナに必要なRubyのバージョンが原因だと疑っていますが、それを更新する方法がわかりません。

クリーンなバージョンをインストールして 3.3.0.beta3-dev を稼働させることはできましたが、古いサイトのバックアップを復元したところ、正しく復元されていないようで、ログインページが機能しなくなりました。JSコンソールを見ると、ログイン/サインアップボタンをクリックするたびに Discourse is not defined というエラーが表示されます。バージョンに大きな違いがあるため、2.6.0 のバックアップをクリーンな 3.3.0 インストールに単純に復元することはできないと思います。

新しいサーバーにすべてを移行しようとしても、この Ruby エラーが毎回ブロックするため ./launcher rebuild app を実行できないため、うまくいきません。

それほど大きなアップグレードを実行している場合、テーマが壊れている可能性が高いです。セーフモードを試してください。

「いいね!」 3

厳密には、まだ 3.3.0 は存在しません。まだベータ版の途中です。

「いいね!」 1

情報ありがとうございます。残念ながら、/safe-mode にアクセスしようとすると、/login URL にリダイレクトされてしまいます。

再インストールして最初からやり直してみます。

公式のディスコースイメージを使用しましたが、それがベータ版であっても最新バージョンをインストールするだけだと思います。それとも、安定版または特定のバージョンを指定する方法はありますか?

はい、できます。Discourse をビルドする前に app.yml を新規インストールで編集してください(ダウングレードはできないため)。GitHub からタグを選択してください。以前、最新バージョンにアップグレードする前に古いバージョンに復元する必要があったときに、この作業を行いました。

今は、何か問題が発生した場合に備えて、動作中のバージョンのイメージを作成してからアップグレードしています。

ありがとうございます。助かりました!

良いニュースとしては、app.yml ファイルを変更して、古いバージョンの discourse_docker と同じバージョンの Discourse をインストールする方法を見つけました。

悪いニュースは、インストールの終盤で別のエラーが発生したことです。

--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 14351 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}

もう少し詳しく調べる必要があります。コンテナ自体の Ruby/Rails に関連する問題のようです。

https://forum.example.com/login?safe_mode=no_themes%2Cno_plugins を試してください。

「いいね!」 2