Rebuild 失败,git reset --hard origin tests-passed 返回失败

我正在 Docker 容器中运行 Discourse,但尝试使用 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'
exec 执行失败,参数如下:{"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,但结果却重复了同样的问题,没有帮助。

好吧,是这样的……问题出在 Discourse 仓库上,因为我什么都没做,只是重新运行了重建,现在它又能正常工作了……

  1. 一个令人毛骨悚然的、状态混乱的仓库可能会搞垮你的整个环境。

  2. 同样令人担忧的是,当远程仓库不配合时,没有回滚恢复机制……整个论坛一直返回 502 错误,直到它成功自行重建。也许 Docker 里有类似镜像历史这样的东西可以回滚……我不太清楚……但看起来,如果你的网站能否正常运行完全依赖于 GitHub 仓库是否正常,那么回滚支持似乎是非常重要的。当然,有人可能会说,在尝试重建之前应该由我本人对服务器进行快照……我想这说法也有道理吧。

如果重建失败,您通常可以运行:

./launcher start app

谢谢 Jay,

容器当时正在启动……我可以使用 docker top 看到 nginx 在容器内运行,而正是该实例导致了 HTTP 502“网关错误”。我通过停止容器并随后收到“连接被拒绝”的确认,说明容器确实在运行,但 Discourse 未能正常启动。

不过,您是想说使用 launcher 工具时,它应该会在容器内部启动 Discourse 应用吗?还是需要在容器内部执行该操作?

抱歉我对此不太了解。

我的意思是,如果重建失败,通常可以使用 start 命令启动旧容器。

Rails 启动需要一些时间,因此出现 502 错误在一两分钟内是正常的。