# Docker Manager 从 beta7 升级到 beta9 失败

**URL:** <https://meta.discourse.org/t/upgrade-of-docker-manager-beta7-beta9-fails/137803>\
**Category:** Self-hosting\
**Created:** [2020年一月5日 09:42 UTC](https://meta.discourse.org/t/upgrade-of-docker-manager-beta7-beta9-fails/137803 "2020-01-05T09:42:18Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Thomas\_Rother](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/thomas_rother/32/423597_2.png) [@Thomas\_Rother](https://meta.discourse.org/u/Thomas_Rother)\
**Post date:** [2020年一月5日 09:42 UTC](https://meta.discourse.org/t/upgrade-of-docker-manager-beta7-beta9-fails/137803/1 "2020-01-05T09:42:18Z")

</div>

您好，

我在升级到最新版本的 Discourse（2.4.0 beta7 \>\> beta9）时遇到了问题。Docker 管理器升级在以下步骤反复挂起：

```
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:605:in `process_client'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:700:in `worker_loop'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:548:in `spawn_missing_workers'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:144:in `start'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `<main>'
正在启动最初停止的 1 个 Unicorn 工作进程

```

重启并重置升级没有任何效果。有什么建议吗？

谢谢，Thommie

---

<div class="post-metadata">

**Author:** ![itsbhanusharma](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/itsbhanusharma/32/180717_2.png) [@itsbhanusharma](https://meta.discourse.org/u/itsbhanusharma)\
**Post date:** [2020年一月5日 10:47 UTC](https://meta.discourse.org/t/upgrade-of-docker-manager-beta7-beta9-fails/137803/2 "2020-01-05T10:47:27Z")

</div>

请登录您的服务器并重新构建。

```plaintext
cd /var/discourse
git pull
./launcher rebuild app

```

---

<div class="post-metadata">

**Author:** ![Thomas\_Rother](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/thomas_rother/32/423597_2.png) [@Thomas\_Rother](https://meta.discourse.org/u/Thomas_Rother)\
**Post date:** [2020年一月5日 11:52 UTC](https://meta.discourse.org/t/upgrade-of-docker-manager-beta7-beta9-fails/137803/3 "2020-01-05T11:52:17Z")

</div>

好的，这有帮助，但我现在发现 Linux 终端和 Discourse 容器 UI 中的信息存在不一致：

管理员页面显示：已安装 2.4.0.beta7，最新版本为 2.4.0.beta9，尽管 /admin/upgrade 页面显示 Discourse（latest-release +88）、Docker 管理器和插件均为“已是最新”。

/var/discourse/containers/app.yml 中的邮件设置与 Discourse UI 中显示的不一致。

看起来在重建过程中出现了某些问题……

Thommie

---

<div class="post-metadata">

**Author:** ![itsbhanusharma](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/itsbhanusharma/32/180717_2.png) [@itsbhanusharma](https://meta.discourse.org/u/itsbhanusharma)\
**Post date:** [2020年一月5日 11:53 UTC](https://meta.discourse.org/t/upgrade-of-docker-manager-beta7-beta9-fails/137803/4 "2020-01-05T11:53:31Z")

</div>

您在重建过程中收到任何错误吗？  
如果是，分享这些信息将有助于我们了解问题所在。

---

<div class="post-metadata">

**Author:** ![Thomas\_Rother](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/thomas_rother/32/423597_2.png) [@Thomas\_Rother](https://meta.discourse.org/u/Thomas_Rother)\
**Post date:** [2020年一月5日 12:08 UTC](https://meta.discourse.org/t/upgrade-of-docker-manager-beta7-beta9-fails/137803/5 "2020-01-05T12:08:31Z")

</div>

好的，我再次重复了重建操作，但在日志的重建过程中没有看到明显的错误，只有 INFO 级别的消息。最后几行是：

```
2020-01-05 12:01:12.911 UTC [53] LOG: shutting down
166:M 05 Jan 2020 12:01:13.087 * DB saved on disk
166:M 05 Jan 2020 12:01:13.087 # Redis is now ready to exit, bye bye...
2020-01-05 12:01:13.669 UTC [49] LOG: database system is shut down
sha256:da70fb2de1f09e179e7b603a2e3aa17140229011b7af40b28eea4615d3fceeb6
9e56de01e8b7c16e0e24c1221ab32cf161b6b9ecd2e9bfd6f722f5226498d3cc
Removing old container
+ /usr/bin/docker rm app
app

+ /usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=de_DE.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=4 -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 LETSENCRYPT_DIR=/shared/letsencrypt -e DISCOURSE_HOSTNAME=forum.netzwissen.de -e DISCOURSE_DEVELOPER_EMAILS=admin@netzwissen.de -e DISCOURSE_SMTP_ADDRESS=10.10.10.19 -e DISCOURSE_SMTP_PORT=25 -e DISCOURSE_SMTP_USER_NAME= -e DISCOURSE_SMTP_PASSWORD= -e LETSENCRYPT_ACCOUNT_EMAIL=me@example.com -h develd-app -e DOCKER_HOST_IP=172.17.0.1 --name app -t -p 80:80 -p 443:443 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address 02:b7:65:5c:bd:c6 local_discourse/app /sbin/boot
7201804f7d5312ceee286af3a5e7db6e3e57a5327504ce752252f238aa9a4e98

```

就我所知，这看起来正常……这里显示的电子邮件参数是正确的，并且与 app.yml 中的设置一致。但 UI 仍然显示旧数据……

---

<div class="post-metadata">

**Author:** ![itsbhanusharma](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/itsbhanusharma/32/180717_2.png) [@itsbhanusharma](https://meta.discourse.org/u/itsbhanusharma)\
**Post date:** [2020年一月5日 12:13 UTC](https://meta.discourse.org/t/upgrade-of-docker-manager-beta7-beta9-fails/137803/6 "2020-01-05T12:13:23Z")

</div>

这在我看来完全正常。我想不出任何理由会导致 UI 显示过时的数据。

---

<div class="post-metadata">

**Author:** ![Thomas\_Rother](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/thomas_rother/32/423597_2.png) [@Thomas\_Rother](https://meta.discourse.org/u/Thomas_Rother)\
**Post date:** [2020年一月5日 14:44 UTC](https://meta.discourse.org/t/upgrade-of-docker-manager-beta7-beta9-fails/137803/7 "2020-01-05T14:44:56Z")

</div>

……是的，我也不太明白。容器在发送邮件时仍使用的是旧的配置数据（因此邮件无法送达），尽管重建过程的最后几行显示的目标 SMTP 服务器是正确的：

- /usr/bin/docker run -[..]  
DISCOURSE\_SMTP\_ADDRESS=10.10.10.19 -e DISCOURSE\_SMTP\_PORT=25 -e  
DISCOURSE\_SMTP\_USER\_NAME= -e DISCOURSE\_SMTP\_PASSWORD= -e

这意味着更新失败了，Docker 容器中运行的仍是旧版本，且 app.yml 中的配置也是旧的——尽管更新页面显示的情况并非如此：

 ![Screenshot_20200105_154333](https://global.discourse-cdn.com/meta/original/3X/3/b/3b016d7a8b338e27cf8394db282263252bed44c1.png)

有什么修复建议吗？

---

<div class="post-metadata">

**Author:** ![tophee](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tophee/32/73406_2.png) [@tophee](https://meta.discourse.org/u/tophee)\
**Post date:** [2020年一月8日 15:17 UTC](https://meta.discourse.org/t/upgrade-of-docker-manager-beta7-beta9-fails/137803/8 "2020-01-08T15:17:18Z")

</div>

我在两个 Discourse 实例上遇到了相同的问题。

第一个错误似乎是这个：

```plaintext
***正在捆绑资源。这可能需要一些时间*** $ RUBY_GC_MALLOC_LIMIT_MAX=20971520 RUBY_GC_OLDMALLOC_LIMIT_MAX=20971520 RUBY_GC_HEAP_GROWTH_MAX_SLOTS=50000 RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=0.9 bundle exec rake assets:precompile 正在清理临时文件 正在捆绑资源 I, [2020-01-08T13:52:00.932032 #29478] INFO -- : 正在写入 /var/www/discourse/public/assets/docker-manager-app-888922f3ec4fc42543c1916f533f3fecb9af503803eb6b8b59904a2310219d1d.js I, [2020-01-08T13:52:01.102633 #29478] INFO -- : 正在写入 /var/www/discourse/public/assets/docker-manager-app-5256678af40d7479a0d37d3bddcca6fa5c2505b83a654a6d23e9d6f4f5fd406a.css I, [2020-01-08T13:52:01.277866 #29478] INFO -- : 正在写入 /var/www/discourse/public/assets/docker-manager-vendor-91af87077979e715f4d5034ea05c612f734c3aece05878051e901d07e84878ee.js 跳过：vendor-a681e94dd2b8c886f184865617b09b4f67b433321acef2bd98bb99bd9495307e.js 已压缩 #<Thread:0x0000559b93cea1d8@/var/www/discourse/lib/tasks/assets.rake:223 run> 因异常终止（已启用 report_on_exception）：/usr/local/lib/ruby/2.6.0/net/http.rb:949:in `rescue in block in connect'：无法打开到 geolite.maxmind.com:443 的 TCP 连接（getaddrinfo：名称或服务未知）（SocketError）来自 /usr/local/lib/ruby/2.6.0/net/http.rb:946:in `block in connect' 来自 /usr/local/lib/ruby/2.6.0/timeout.rb:93:in `block in timeout' 来自 /usr/local/lib/ruby/2.6.0/timeout.rb:103:in `timeout' 来自 /usr/local/lib/ruby/2.6.0/net/http.rb:945:in `connect' 来自 /usr/local/lib/ruby/2.6.0/net/http.rb:930:in 

```

再往下：

```plaintext
完成压缩 docker-manager-vendor-91af87077979e715f4d5034ea05c612f734c3aece05878051e901d07e84878ee.js：0.12 秒 完成压缩所有 JS 文件：4.44 秒 rake aborted! SocketError: 无法打开到 geolite.maxmind.com:443 的 TCP 连接（getaddrinfo：名称或服务未知）/var/www/discourse/lib/final_destination.rb:414:in `safe_session' /var/www/discourse/lib/final_destination.rb:365:in `safe_get' /var/www/discourse/lib/final_destination.rb:131:in `get' /var/www/discourse/lib/file_helper.rb:47:in `download' /var/www/discourse/lib/discourse_ip_info.rb:30:in `mmdb_download' /var/www/discourse/lib/tasks/assets.rake:226:in `block (3 levels) in <top (required)>' /var/www/discourse/lib/tasks/assets.rake:225:in `each' /var/www/discourse/lib/tasks/assets.rake:225:in `block (2 levels) in <top (required)>' 由以下原因导致：SocketError: getaddrinfo：名称或服务未知 /var/www/discourse/lib/final_destination.rb:414:in `safe_session' /var/www/discourse/lib/final_destination.rb:365:in `safe_get' /var/www/discourse/lib/final_destination.rb:131:in `get' /var/www/discourse/lib/file_helper.rb:47:in `download' /var/www/discourse/lib/discourse_ip_info.rb:30:in `mmdb_download' /var/www/discourse/lib/tasks/assets.rake:226:in `block (3 levels) in <top (required)>' /var/www/discourse/lib/tasks/assets.rake:225:in `each' /var/www/discourse/lib/tasks/assets.rake:225:in `block (2 levels) in <top (required)>' 任务：TOP => assets:precompile（通过运行任务并添加 --trace 查看完整堆栈跟踪）Docker Manager: 升级失败 #<RuntimeError: RuntimeError> /var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:159:in `run' /var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:81:in `upgrade' /var/www/discourse/plugins/docker_manager/app/controllers/docker_manager/admin_controller.rb:95:in `block in upgrade' /var/www/discourse/plugins/docker_manager/app/controllers/docker_manager/admin_controller.rb:91:in `fork' /var/www/discourse/plugins/docker_manager/app/controllers/docker_manager/admin_controller.rb:91:in `upgrade' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_controller/metal/basic_implicit_render.rb:6:inbox_tray:

```

我将尝试重新构建，但我仍然想知道是什么导致了这些升级问题…
