无法重建,因为SSH模板已被删除

我们正尝试重建我们的 Discourse 安装(按照管理界面的要求)
以下是出现的错误,请帮忙解决,我们不太熟悉 Docker。

    root@school-forum:/var/discourse# ./launcher rebuild app
    确保启动器已是最新版本
    获取 origin
    启动器已是最新版本
    cat: templates/sshd.template.yml: 没有那个文件或目录
    cd /pups && git pull && /pups/bin/pups --stdin
    /usr/bin/docker: 引用格式无效:仓库名称必须为小写。
    请参阅 '/usr/bin/docker run --help'。
    cat: cids/app_bootstrap.cid: 没有那个文件或目录
    "docker rm" 需要至少 1 个参数。
    请参阅 'docker rm --help'。

    用法:docker rm [选项] 容器 [容器...]

    删除一个或多个容器
    rm: 无法删除 'cids/app_bootstrap.cid': 没有那个文件或目录
    ** 启动失败 ** 请向上滚动并查找更早的错误信息,可能不止一条。
    ./discourse-doctor 可能有助于诊断问题。
    root@school-forum:/var/discourse#

请帮忙——我们似乎找不到最近有类似问题的人。

编辑:在执行 apt-get update/upgrade 后,我得到了一个新的错误信息:

/usr/bin/docker: 来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:348: 启动容器进程导致 "process_linux.go:297: 复制启动数据到管道导致 \"write init-p: 管道破裂\"":未知。
您的 Docker 安装无法正常工作

参见:https://meta.discourse.org/t/docker-error-on-bootstrap/13657/18?u=sam
root@school-forum:/var/discourse# ./launcher rebuild app
/usr/bin/docker: 来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:348: 启动容器进程导致 "process_linux.go:297: 复制启动数据到管道导致 \"write init-p: 管道破裂\"":未知。
您的 Docker 安装无法正常工作

参见:https://meta.discourse.org/t/docker-error-on-bootstrap/13657/18?u=sam
3 个赞

Docker 升级后你重启过吗?你的操作系统和 Docker 版本是多少?

1 个赞

我自己也遇到过这个错误。

我是通过编辑 App.yml 并在 Templates 中注释掉那一行来修复的。使用 # 来注释该行。

之后重新构建应用就正常了。

1 个赞

该文件在 git pull 后丢失了(不确定之前是否存在)。

1 个赞

就是这样!

我已编辑标题以说明该问题。

3 个赞

尝试了几种方法后,我决定直接把它注释掉。直到今天的帖子发布之前,我还没发现其他人遇到过这个重建问题。:clinking_beer_mugs::smiling_face_with_sunglasses::+1::sparkles:

4 个赞

大家好,快速更新:注释掉 app.yml 中的那一行解决了这个问题,但重建在后续步骤失败,报错信息如下:

cd /pups && git pull && /pups/bin/pups --stdin
fatal: unable to access 'https://github.com/discourse/pups.git/': Could not resolve host: github.com
1e4e6a45815a1196e4687a17e44a0beb1dd6229cd61ba2a3b657903e6cd2b56e
** 引导失败 ** 请向上滚动查看之前的错误信息,可能不止一条。
./discourse-doctor 可能有助于诊断问题。

另外,在尝试重建后,./discourse-doctor 也会失败,并显示相同的错误信息。

4 个赞

很遗憾听到这个消息。可能需要团队成员协助。因为之后没有再出现问题。

我一直在与 @multicam 协作处理这个问题,看起来可能是 Docker 分配的 DNS 导致的。

这是我找到的最相似的案例,但他们的修复方案并未解决我们的问题。

1 个赞

我在从 2.4.2 升级到 2.4.3 时遇到了完全相同的问题,日志如下:

确保启动器已更新至最新版本
正在获取 origin
启动器已是最新版本
正在停止旧容器
+ /usr/bin/docker stop -t 10 app
app
cat: templates/sshd.template.yml: 没有那个文件或目录
cd /pups && git pull && /pups/bin/pups --stdin
/usr/bin/docker: 无效的引用格式:仓库名称必须为小写。
请查看 '/usr/bin/docker run --help'。
cat: cids/app_bootstrap.cid: 没有那个文件或目录
"docker rm" 至少需要一个参数。
请查看 'docker rm --help'。

用法:docker rm [OPTIONS] 容器 [容器...]

移除一个或多个容器
rm: 无法移除 'cids/app_bootstrap.cid': 没有那个文件或目录
** 引导失败 ** 请向上滚动并查找更早的错误信息,可能不止一条。
./discourse-doctor 可能有助于诊断问题。

运行 ./discourse-doctor 后,应用重建再次失败,但容器已重新启动,网站在 2.4.2 版本上已恢复正常。

目前有什么解决方案吗?

按照此处所述,停止包含缺失的 ssh 模板:

2 个赞

已提交一个 PR 以重新添加空白文件:

这应该能修复现有环境的错误。


此外,还提交了另一个 PR,以便在出现该问题时向用户发出警告:

4 个赞

问题已解决 @Heliosurge @tjands @snakeninny - 再执行一次 ./launcher rebuild 应该就能正常运行了。

2 个赞