リビルドが git reset --hard origin tests-passed で失敗し、リターンコードが返されました

Discourse を Docker コンテナ内で実行しており、launcher を使って app.yml を再構築しようとすると、以下のエラーが発生します。

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && git reset --hard origin tests-passed が失敗しました (戻り値: #<Process::Status: pid 257 exit 128>)
失敗の場所: /pups/lib/pups/exec_command.rb:112:in `spawn'
実行が失敗しました。パラメータ: {"cd"=>"$home", "hook"=>"code", "cmd"=>["git remote set-branches --add origin master", "git remote set-branches origin $version", "git fetch --depth 1 origin $version", "git checkout $version", "git reset --hard origin $version", "git clean -f", "mkdir -p tmp", "chown discourse:www-data tmp", "mkdir -p tmp/pids", "mkdir -p tmp/sockets", "touch tmp/.gitkeep", "mkdir -p                    /shared/log/rails", "bash -c \"touch -a           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log\"", "bash -c \"ln    -s           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log $home/log\"", "bash -c \"mkdir -p           /shared/{uploads,backups}\"", "bash -c \"ln    -s           /shared/{uploads,backups} $home/public\"", "bash -c \"mkdir -p           /shared/tmp/{backups,restores}\"", "bash -c \"ln    -s           /shared/tmp/{backups,restores} $home/tmp\"", "chown -R discourse:www-data /shared/log/rails /shared/uploads /shared/backups /shared/tmp", "find public/plugins/ -maxdepth 1 -xtype l -delete"]}
a84cc388fbc4b16307c2081e17b03c5eee578e1155fa1e057147601119d89a34
** ブートストラップに失敗しました ** 上記をスクロールして、以前のエラーメッセージを確認してください。複数のエラーが存在する可能性があります。
./discourse-doctor を実行すると問題の診断に役立つ場合があります。
==================== 再構築ログの終了 ====================

これは、GitHub 上の公式 Discourse リポジトリの現在の状態に関する git エラーのようですが、Docker や git についての知識が不足しているため、確信を持って判断できません。提案された ./discourse-doctor を実行しようとしましたが、同じエラーが繰り返されるだけで、何も解決しませんでした。

まあ、そういうことでした… ディスカースのリポジトリに何か問題があったみたいで、僕は何もしてないのに、再構築をもう一度実行したら、今では動くようになりました。

  1. リポジトリの状態がおかしくなると、全体のセットアップが壊れてしまうのは怖いですね。

  2. また、リモートリポジトリが正常に動作しない場合のリバースロールバック復旧がないのも怖いです。正常に再構築されるまで、フォーラム全体が502バッドゲートウェイでした。Dockerにはイメージ履歴のようなもので、以前の状態に戻せるものがあるかもしれません… 僕には分かりませんが。GitHubリポジトリが正しく整理されているかどうかによってサイトが動くかどうかが完全に左右されるのであれば、ロールバック機能は非常に重要だと思われます。もちろん、「再構築を試みる前にサーバーのスナップショットを取るべきだ」という意見もあるかもしれません。まあ、そう言われればそうかもしれませんね。

ビルドの再構築が失敗した場合は、通常、以下のコマンドを実行してください。

./launcher start app

Jay、ありがとうございます。

コンテナは起動していました。docker top でコンテナ内で nginx が実行されていることを確認できましたが、そのインスタンスが HTTP エラー 502「Bad Gateway」の原因となっていました。コンテナを停止するとconnection refusedとなったため、コンテナは実行中でしたが、Discourse が正しく動作していないことが確認できました。

ただ、ランチャーユーティリティを使用すれば、コンテナ内で Discourse アプリケーションが起動するということでしょうか?それとも、コンテナ内部から実行する必要があるのでしょうか?

私の無知をお許しください。

再構築が失敗した場合、通常は start コマンドで古いコンテナを起動できます。

Rails の起動には時間がかかるため、数分間は 502 エラーが表示されるのは想定内のことです。