无法升级,因为 Docker 版本过旧

升级期间,我执行了 cd /var/discourse; git pull; ./launcher rebuild app

系统显示“升级完成”和“POSTGRES 升级完成”。后者提示“再次重建”,但这似乎没有任何作用。

尽管升级已完成,但我无法启动应用。执行 ./launcher start app 时出现以下错误:

Unable to find image 'local_discourse/app:latest' locally
/usr/bin/docker: Error response from daemon: pull access denied for local_discourse/app, repository does not exist or may require 'docker login'.
See '/usr/bin/docker run --help'.

无法再次重启应用,且不确定该如何继续。

./discourse-doctor 也无济于事(它仅检测到应用未运行,尝试重建并重启,最终仍出现相同错误)。

由于是新用户,无法附加文件,以下是我认为来自调试日志的相关片段:

Failed to rebuild app.

Checking your domain name . . .

Connection to community.gingkoapp.com succeeded.
You should probably remove any non-standard plugins and rebuild.
Attempting to restart existing container. . . 

+ /usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=2 -e UNICORN_SIDEKIQS=1 -e RUBY_GLOBAL_METHOD_CACHE_SIZE=131072 -e RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000 -e RUBY_GC_HEAP_INIT_SLOTS=400000 -e RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.5 -e DISCOURSE_DB_SOCKET=/var/run/postgresql -e DISCOURSE_DB_HOST= -e DISCOURSE_DB_PORT= -e DISCOURSE_DEVELOPER_EMAILS=REDACTED  -e DISCOURSE_HOSTNAME=community.gingkoapp.com -e DISCOURSE_SMTP_ADDRESS=smtp.mailgun.org -e DISCOURSE_SMTP_USER_NAME=postmaster@community.gingkoapp.com -e DISCOURSE_SMTP_PASSWORD=REDACTED  -h community-app -e DOCKER_HOST_IP=172.17.0.1 --name app -t -p 80:80 -p 2222:22 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address 02:fc:04:ee:f5:11 local_discourse/app /sbin/boot
Unable to find image 'local_discourse/app:latest' locally
/usr/bin/docker: Error response from daemon: pull access denied for local_discourse/app, repository does not exist or may require 'docker login'.
See '/usr/bin/docker run --help'.
Failed to restart the container.
  1. 您的 Docker 版本是什么?
  2. 您是否尝试过本常见问题解答中建议的解决方案?

谢谢!

Docker 版本 17.12.0-ce

我处于空间受限的环境中(经常有人要求我尝试清理镜像),因此这听起来是导致此故障的一个合理原因。

我将尝试列出的步骤并反馈结果。

您的 discourse Docker 版本过旧。
建议先更新后再继续。

由于网络界面(或 curl 调用 API)已不可用,我不确定该如何操作。不过我会进一步研究。我先升级一下我的 Droplet 磁盘大小,看看是否有帮助。

(除非你是指我的 Docker 版本过旧?)

哦,抱歉。
我本想说的是 Docker 版本太旧了。请先尝试升级。非常抱歉出现拼写错误并造成混淆。

别担心,我明白你的意思了,因为你问的是 Docker 版本。
我也用的是 14.04,所以我打算先升级到 16.04。

再次感谢你的建议。有任何更新我会再发帖告知。

天哪!

14.04 > 16.04 > 18.04,你还有漫长的一天要过。

不过请记住,16.04 也将在 2021 年停止支持,所以至少升级到 18.04。

拼命努力却原地踏步……这就是我的人生写照!
软件更新太快,我有点跟不上了!:stuck_out_tongue_closed_eyes:

2 个赞

祝你在软件升级的新征程中一切顺利!:confetti_ball:

如果这是一台 VPS,则无需升级当前服务器。直接创建一台运行 20.04 的新服务器,并将您的网站迁移过去,这种方式更快也更简单。

但是他们的容器出现了问题,由于多种原因无法启动。

上次自动备份将位于共享文件夹中,随后将被迁移至新服务器。

1 个赞

请问目前 Discourse 支持的最低 Docker 版本在哪里可以查到?

这里

1 个赞

是的,我目前正在这样做。这应该比升级现有系统快得多……希望我能从备份文件中恢复(这些文件我仍然可以在旧服务器上访问)。

2 个赞

谢谢..!

看来这个版本在当前 Discourse 中支持良好。@itsbhanusharma,你觉得它太旧了吗?

1 个赞

谁说过它被支持了?任何超过几年的 Docker 版本,连其开发者都不再提供支持,那你又怎么指望 Discourse 会支持它呢?

我只是在查看源代码…

1 个赞

一切正常了。我新创建了一个 Digital Ocean Droplet 并恢复了备份。最新的备份似乎已损坏,但幸运的是我只丢失了一两篇帖子,并成功从之前的备份中恢复了数据。

感谢大家的帮助!

3 个赞