升级到 Ubuntu 22.04 后重建出现问题

在苦苦挣扎了几个小时后,我需要寻求帮助。

调试日志:

https://privatebin.net/?b56249efe41b5599#8nt7yMQU2Hft4HysXSoZkxXQTYdR9MFv91qC9sbBgen

1 个赞

您的 Droplet(或 docker 容器)与 GitHub 的连接存在问题

fatal: 无法访问 ‘GitHub - discourse/discourse: A platform for community discussion. Free, open, simple.’:无法解析主机:github.com

您能否验证一下 GitHub 是否可访问?

2 个赞

啊,是不是意味着我在短时间内尝试重建了太多次,导致我的服务器 IP 被暂时禁止了?

其他的错误都不重要吗?

我刚才又试了一次,还是被阻止了,所以还有什么别的办法可以尝试,还是我应该等 24 小时后再试一次?

您可以尝试 ping/curl github.com,看看是否收到任何响应。这可能是防火墙或连接性问题,而不是速率限制。

1 个赞

“无法解析主机”表明存在 DNS 问题,即您的服务器无法找到 github.com 的 IP 地址。

==================== REBUILD LOG ====================
检测到 x86_64 架构。
确保启动器是最新版本
正在获取 origin
启动器是最新版本

这表明您的主机能够解析并连接到 github.com,除非您从其他地方克隆了 discourse_docker 存储库。您可以使用以下命令确认这一点,以列出存储库的远程:

cd /var/discourse
git remote -v

输出应为:

origin	https://github.com/discourse/discourse_docker.git (fetch)
origin	https://github.com/discourse/discourse_docker.git (push)

如果情况确实如此,那么随后无法解析 github.com 的错误将意味着 Docker 容器尽管主机能够解析,但它自己无法解析,这表明 Docker 连接存在问题。

2 个赞

git remote -v 的输出确实符合预期。我应该如何排查 Docker 的问题,或者直接重新安装它?只要不丢失任何数据,我很乐意这样做。Discourse 究竟将数据库和上传的文件存储在哪里(无论接下来发生什么,我都想手动备份它们)?

/var/discourse/shared/standalone 被映射到容器中的一个卷,所有持久化数据都存储在那里。

docker network ls 将列出 docker 网络,我看到的是默认的 bridge 网络和另外两个网络。容器使用默认的 bridge 网络,除非明确告知使用其他网络。

我找到了 一些信息 关于默认 bridge 网络不再提供与外部世界的连接。我猜测 Ubuntu 22.04 可能已升级到适用此规则的 Docker 版本,这意味着 Discourse 容器需要设置为使用用户定义的 bridge。

我认为 你可以编辑 /var/discourse/containers/app.yml 并在底部添加此内容,然后重建:(但我尚未测试过)

networks:
  default:
    driver: bridge

/var/discourse/shared/standalone/backups/default 似乎有所有重要部分(数据库和上传文件)的压缩备份。

感谢您的建议,但没有成功。

我应该只尝试重新安装 Docker,还是如果我这样做,我不如彻底清除一切并完全全新安装 Discourse(我是通过 Discourse | DigitalOcean Marketplace 1-Click App 安装的)?

我猜在 Discourse 管理后台导入备份文件应该很简单?

standard install 是唯一官方支持的安装方式,但您可以在下方找到有关恢复备份的信息。这与 DO 1-Click 安装过程相同。

看起来 1-Click 应用明确使用了 Ubuntu 20.04,因此在更改之前,最好继续使用 20.04。它将在未来三年内继续获得错误修复/安全更新,因此没有必要急于迁移到 22.04。

不过,您不妨先尝试重新安装 Docker。也许问题出现在升级过程中,并且重新安装后 Docker 网络被移除然后重新添加可能会解决它。

我最终只是用一个干净的 Ubuntu 22.04 副本重建了 Droplet,手动(以标准方式)重新安装了 Discourse,然后导入了备份。这很快很容易,我希望我一开始就这么做了。

感谢所有的帮助!

2 个赞

很高兴知道这不是 22.04 安装的普遍问题。

我这个周末从 20.04 升级到 22.04 执行了几次 do-release-upgrades,我可以确认它们现在都可以正常工作,而无需重新安装 Docker。看来 Ubuntu 仓库在过去几周内一定修复了一些问题。

现在应该可以顺利地进行此类升级了。

1 个赞