遗憾的是,仅仅运行
./launcher start app
并不能使论坛恢复运行。
无论如何,我进行了进一步的实验。具体来说,我尝试在 Docker 镜像中手动执行失败的 yarn 命令:
./launcher enter app
cd /var/www/discourse
su discourse
yarn install --frozen-lockfile
... 失败并出现相同的超时错误 ...
yarn config set network-timeout 600000 -g
yarn install --frozen-lockfile
... 成功 ...
这证实了增加超时时间可以解决问题。
那么剩下的问题是如何在 ./launcher rebuild app 期间也增加超时时间。
文件 web.template.yml 确实位于 discourse/containers 中,在 Docker 镜像之外。我最初没有找到它,因为我的 Discourse 安装在一个非标准的位置,而不是在 /var/discourse。
上面引用的帖子中提到的修复是指第 159 行,但这似乎不再正确,可能是由于更新。然而,在第 188 行附近有这些行:
- exec:
cd: $home
hook: yarn
cmd:
- |
if [ "$version" != "tests-passed" ]; then
rm -rf app/assets/javascripts/node_modules
fi
- su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'
帖子建议插入一个新的部分来设置超时时间,但没有提供如何这样做的具体说明。我对 yaml、pups 和 yarn 或者它们在 Discourse 中的使用方式不太熟悉,所以不想猜测。相反,我尝试对原始部分进行了如下更改:
- exec:
cd: $home
hook: yarn
cmd:
- |
if [ "$version" != "tests-passed" ]; then
rm -rf app/assets/javascripts/node_modules
fi
- su discourse -c 'yarn config set network-timeout 600000 -g && yarn install --frozen-lockfile && yarn cache clean'
现在 ./launcher rebuild app 命令花费的时间非常长(两个多小时!,比以前花费的时间长得多)。好消息是论坛已经恢复在线!太棒了,谢谢你的帮助。
有没有办法通过向 containers/app.yml 添加命令来增加超时时间?这会很方便,因为它会将我所有的自定义设置保存在一个文件中。
使用双容器设置听起来是个好主意;我不知道这是可能的。我想你指的是这个:https://meta.discourse.org/t/move-from-standalone-container-to-separate-web-and-data-containers/29413;我会尝试一下。任何额外的建议都欢迎。
当我在浏览器中更新我的 Discourse 实例时,它也会运行 ./launcher rebuild app 吗?它会暂时使论坛下线吗?到目前为止,我一直认为论坛在大部分过程中都保持在线,但我不确定。这些事情对我来说从来都不清楚,我也从未有时间真正弄清楚。任何答案或指向更多信息的链接都欢迎。