Discourseオフライン "ブートストラップに失敗しました (終了コード 5)"

コミュニティの皆様、こんにちは。このような状況でお会いすることになり、申し訳ありません。Discourse はアップグレードに失敗した後、オフラインになっています。

状況は以下の通りです。

Discourse offline after failed upgrade "bootstrap failed with exit code 5"

v3.2.0.beta3 へのアップグレードを試みました。

まだ Ubuntu 16.04 を使用しています。

幸い(願わくば)、以前の Docker イメージは持っていますが、サービスを復元するために何をすればよいかわかりません。DigitalOcean も使用しています。

エラー

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle install --retry 3 --jobs 4' failed with return #<Process::Status: pid 448 exit 5>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"bundle_exec", "cmd"=>["su discourse -c 'bundle config --local deployment true'", "su discourse -c 'bundle config --local without \\\"development test\\\"'", "su discourse -c 'bundle install --retry 3 --jobs 4'"]}
bootstrap failed with exit code 5
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
e9fead51a802981ae53f85f54dc8bf7bf9fae5c1dab3e06e0d77ea0930ffb261

どなたか助けていただけますか?

古いイメージはありますが、最新のイメージを削除しました…

docker rmi 51421f454322 -f

古いコンテナはありますが、./launcher start app を実行しようとすると、削除されたイメージを優先するようです。

root@hostname:/var/discourse# ./launcher start app
WARNING: Docker version 17.05.0-ce deprecated, recommend upgrade to 17.06.2 or newer.
x86_64 arch detected.
WARNING: containers/app.yml file is world-readable. You can secure this file by running: chmod o-rwx containers/app.yml

starting up existing container
+ /usr/bin/docker start app
app

root@hostname:/var/discourse# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                      NAMES
afeec2777503        51421f454322        \"/sbin/boot\"        3 hours ago         Up 5 seconds        0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   app
root@hostname:/var/discourse# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
discourse/base      2.0.20231218-0429   984f729957df        12 days ago         3.14GB

イメージID 984f729957df で続行する方法はありますか?

新しいドロップレットを起動し、/var/discourse をコピーしてそこで再構築する方が簡単です。これにより、問題を緩和するのではなく、解決できます。

ドッカーコマンドを提供するランチャコマンドがあり、それが役立つかもしれません。ランチャースクリプトを見てその名前を見つけることができます(ただし、私は携帯電話からです)。

「いいね!」 1

次を提案しているようですね: ./launcher start-cmd app

これは + true run --shm-size=512m -d --restart=always... から始まるかなりの量の出力を生成します。

思い切って試してみました:
docker + true run 984f729957df --shm-size=512m -d --restart=always ... が、効果はありませんでした。

container_linux.go:247: starting container process caused "exec: \"--shm-size=512m\": executable file not found in $PATH"
docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"--shm-size=512m\": executable file not found in $PATH".

提供していただけるヘルプは歓迎です。ありがとうございます。

ええ、そんな感じです。どうすればいいかわかりません。唯一使える画像を削除してしまった可能性があります。

新しいドロップレットを起動して、ファイルをコピーすることをお勧めします。もしあなたが私のクライアントなら、私がそうします。

提案ありがとうございます。予期せぬ移行は好きではありませんが、それが予定されているようです。あなたがこれを参照していると仮定しますか? Move a Discourse site to another VPS with rsync

DO Spaces(S3ストレージ)を有効にしている場合、追加の説明はありますか?

年末年始という時期を考えると、タイムリーに必要な変更を他の人と調整するのは非常に困難(ほぼ不可能)でしょう。

代わりに、まず最後に機能していた状態に戻してから、移行を計画したいと思います。

どなたか手伝っていただけますか?

アップロード用のS3互換オブジェクトストレージプロバイダーの設定に従っていれば、ありません。データベースに設定がある場合、rsyncではなく復元を試みるとより複雑になる可能性があります。

新しいドロップレットへの移行は、DNSを無効なサイトに戻すだけで済むため、リスクは低いですが、DNSとDigitalOceanへのアクセスがない場合は行き詰まります。

おそらく、開始コマンドで何かを引用し忘れたようです。それがやりたいことかもしれません。

頑張ってください。

アップロード用のS3互換オブジェクトストレージプロバイダーを構成する

2016年にこのサービスを構成したので、残念ながら設定はデータベースにあるようです。app.yml には S3 パラメータはありません。

他に注意すべき落とし穴はありますか?

rsyncで転送すれば問題ないはずです。その後、推奨される設定に切り替えることができます。データベースの復元を試みると問題が発生する可能性があります。

「いいね!」 1

改めてご協力ありがとうございます。rsyncについてですが、指示に次のように明記されているのが少し心配です。

  1. 新しいサーバーを設定して同期する
  2. 古いサーバーでサービスを停止する
  3. --delete を付けて再度同期する

これは不安定に聞こえますし、私のシナリオでは不可能です。これは懸念事項になりますか?最後のrsync以降にフォーラムで発生したことをすべて同期することだと思いますが、間違っている可能性もあります。

アップデート:
新しいDropletでオンラインに戻りました。

移行が比較的簡単だと今わかって嬉しいです。アップデートで古いDropletが壊れなければ、もっと良かったのに。

休日なのはわかっていますが、開発チームの誰かがこれについて調べる時間を取ってくれると素晴らしいです。これは一度きりではないと思います。別のスレッドで、コレクションが増えているというタグ付けをされました。

「いいね!」 2