重建期间错误:registry.yarnpkg.com ESOCKETTIMEDOUT

遗憾的是,仅仅运行

./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 吗?它会暂时使论坛下线吗?到目前为止,我一直认为论坛在大部分过程中都保持在线,但我不确定。这些事情对我来说从来都不清楚,我也从未有时间真正弄清楚。任何答案或指向更多信息的链接都欢迎。

1 个赞