非常に古いDiscourseのアップグレードでRubyエラーが発生

古いインストールのアップデートを試みています。

まず、以下を実行しました。

cd /var/discourse
sudo git pull
sudo ./launcher rebuild app

その後、失敗し、ログファイルを上にスクロールすると、唯一のエラーは次のとおりでした。

ERROR: bundler のインストール中にエラーが発生しました:
bundler-2.5.3 は Ruby バージョン >= 3.0.0 を必要とします。現在の Ruby バージョンは 2.7.2.137 です。

新しい Ruby のインストール方法を教えていただけますか?システムは元々 Digital Ocean の Docker イメージからインストールされ、数年間ほとんど、あるいはまったくアップグレードされていません。

Ubuntu 18.04 で実行しています。

./discourse-doctor を実行しました。

そして、デタッチドヘッドの状態になり、再構築してから、同じ Ruby エラーが発生しました。

もうお手上げです。

古いバージョンからのアップグレードを機能させる方法について、何か助言はありますか?

コンテナイメージが非常に古いDiscourseベースイメージに固定されている可能性があります。

(編集済みの)コンテナ設定をここに投稿していただけますか?

それがどうすればいいのか分かりませんが、ディスコースドクターの出力からこれを見つけました。
DOCKER VERSION: Docker version 19.03.1, build 74b1e89

そして、それは3年前に作成されました。

「いいね!」 1

ホストマシンの経過年数を考慮すると、ここでの最善策は、サイトのバックアップを取得し、新しいサーバーを作成してインストールを実行し、その後、新しいサーバーにバックアップを復元することでしょう。

既存のサーバーをアップグレードするよりも手間がかからず(そしてはるかに簡単)です。

「いいね!」 2

しかし、インストールが失敗したため、バックアップを取得するためにDiscourseを実行できません。DigitalOceanのドロップレットのスナップショットを撮ることはできましたが、それは私が理解している限りでは実際にはバックアップではありません。

./launcher start app を実行すれば、古いサイトに再起動できるはずです。

「いいね!」 1

それを試したのですが、502 Bad Gatewayのエラーが出るようになりました :sigh:

「いいね!」 1

古い /var/discourse を新しいサーバーに rsync するか、あるいは containersshared だけにするかもしれません。

もう手に負えないので、マーケットプレイスに有料のヘルプ募集広告を出すことにします :grinning:

「いいね!」 2

もしコンテナのアップデートを試みる前にすべてのデータが含まれたドロップレットのスナップショットがあれば、それからバックアップを取得できるはずです。

もしなければ、ほぼ確実に問題ありませんが、コンテナを再び起動できない場合、データを引き出すにはそのプロセスに詳しい人に助けを求める必要があります。

現在、Bad Gatewayのエラーが発生していても、コンテナにアクセスできれば discourse backup を実行してデータを取得できるはずです。

「いいね!」 4