尝试停止容器时重建冻结

我今天收到了第一条消息:您正在运行旧版本的 Discourse 镜像。在运行最新镜像之前,无法通过 Web UI 进行升级,我认为我的安装已出现问题。

我按照说明操作,由于我的托管提供商不允许创建 root 用户,因此每条命令都使用 sudo 执行:

cd /var/discourse
sudo git pull
sudo ./launcher rebuild app

由于出现关于冲突的错误,我不得不在执行 pull 之前先运行 sudo git stash

一切似乎进展顺利(我等待了一个多小时),但随后我的终端会话关闭了(出现 broken pipe 错误)。为了解决这个问题,我将服务器上的 ClientAliveInterval 设置为 60(此前该选项被注释掉了),然后重启并重试。

现在,当重新构建脚本运行时,它在停止 Docker 容器时崩溃。

我尝试通过在执行重新构建脚本之前运行 docker kill <id> 来绕过此问题,但同样的崩溃仍然发生(CPU 占用率持续 100% 约 15 分钟……然后数小时无响应)。

重启后,网站仍然可以访问,但我无法更新它(UI 更新器仍显示我运行的是旧版 Discourse 镜像)。

非常感谢任何建议。

如果不查看构建输出,很难猜测。

您可以尝试使用 tmux(或类似工具)在断开连接时保持会话打开(您可以使用 tmux attach 重新连接到该会话)。

不妨看看 PostgreSQL 13 更新

谢谢 Jay,我想我已经找到问题了。

我的 VPS 提供商 webdock.io(顺便说一句,他们非常棒)不支持 ZFS,因为他们在宿主机层面使用了它;我被告知嵌套 ZFS 是不可行的。他们也不推荐在我的安装中使用 overlay2,而是建议我编辑 launcher 文件,在其中添加 vfs 存储驱动(默认情况下并不包含此项)。

171‎‏‏‎ ‎‏‏‎ ‎‏‏‎‎‏‏‎ ‎‏‏‎ ‎‏‏‎ Storage Driver: (vfs|aufs|zfs|overlay2)
‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎‎‏‏‎ ‎‎‏‏‎ ‎‏‏‎ ‎‏‏‎‎‏‏‎ ‎‏‏‎ ‎‏‏‎‎‏‏‎ ‎‏‏‎ ‎‏‏‎‎‏‏‎ ‏‏‎ ‎‏‏‎‎‏‏‎ ‎‏‏‎ ‎‏‏‎‎‏‏‎ ‎‏‏‎ ‏‏‎‎‏⬆️

我怀疑 sudo git pull 覆盖了这一设置,随后我尝试使用错误的存储驱动重新构建?

我已经将所有内容回滚,并在运行 rebuild app 之前重新编辑了 launcher,现在一切正常了。

cd /var/discourse
sudo git stash
sudo git pull
sudo nano launcher 

‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ 然后编辑第 171 行,添加 vfs

sudo ./launcher rebuild app

@ajmuir

我知道您的问题在一年前就已经解决了,但我想为这个讨论贡献我的看法,同时也为找到此帖子的新用户指明正确的方向。

Webdock(现在)建议使用 fuse-overlayfs 作为 Docker 存储驱动程序:How to change the Docker storage driver – Webdock

原因是 vfs 会产生大量的磁盘空间使用量。

但对 Docker 使用 fuse-overlayfs 会在 Discourse 启动器端产生警告或错误,因为它不是推荐的驱动程序。

我在我的博客上的这篇帖子中详细介绍了如何解决这个问题:Deploying Discourse on a Webdock server

您也可以像您那样做,将已安装的驱动程序添加到 egrep 语句中。

您为什么说 Webdock 不允许创建 root 用户?

您可以简单地使用 sudo su 切换到 root 用户,然后执行 Discourse 安装指南中的命令。