bootstrap 失败错误 - pups 问题

大家好 -

最近我一直在尝试在更新后重建我们的测试实例,但一直不成功。搜索谷歌/ChatGPT 表明 app.yml 格式可能存在问题,但我一直没能弄清楚。这是 stdout,我知道它没什么用:

检测到 x86_64 架构。
警告:containers/app.yml 文件是全局可读的。您可以通过运行以下命令来保护此文件:chmod o-rwx containers/app.yml
确保启动器是最新版本
您的启动器版本超前于源版本
停止旧容器
app
2.0.20250226-0128: 从 discourse/base 拉取
Digest: sha256:6f18aa2cd22bba0deb91d69194e577d4f96130ad555ae8ec646a8792cbfe37db
状态:镜像已更新至 discourse/base:2.0.20250226-0128
docker.io/discourse/base:2.0.20250226-0128
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
109:C 13 Jun 2025 15:20:04.997 # oO0OoO0OoO0Oo Redis 正在启动 oO0OoO0OoO0Oo
109:C 13 Jun 2025 15:20:04.997 # Redis 版本=7.0.15, 位数=64, commit=00000000, 已修改=0, pid=109, 刚刚启动
109:C 13 Jun 2025 15:20:04.997 # 配置已加载
109:M 13 Jun 2025 15:20:04.997 * 单调时钟:POSIX clock_gettime
109:M 13 Jun 2025 15:20:04.998 * 运行模式=standalone, 端口=6379.
109:M 13 Jun 2025 15:20:04.998 # 服务器已初始化
109:M 13 Jun 2025 15:20:04.999 * 加载由版本 7.0.7 生成的 RDB
109:M 13 Jun 2025 15:20:04.999 * RDB 年龄 14 秒
109:M 13 Jun 2025 15:20:04.999 * 创建时 RDB 内存使用量 2.95 Mb
109:M 13 Jun 2025 15:20:05.007 * RDB 加载完成,已加载键:3659,已过期键:0。
109:M 13 Jun 2025 15:20:05.007 * 从磁盘加载的 DB:0.008 秒
109:M 13 Jun 2025 15:20:05.007 * 准备接受连接
3649:C 13 Jun 2025 15:22:52.415 # oO0OoO0OoO0Oo Redis 正在启动 oO0OoO0OoO0Oo
3649:C 13 Jun 2025 15:22:52.415 # Redis 版本=7.0.15, 位数=64, commit=00000000, 已修改=0, pid=3649, 刚刚启动
3649:C 13 Jun 2025 15:22:52.415 # 配置已加载
3649:M 13 Jun 2025 15:22:52.415 * 单调时钟:POSIX clock_gettime
3649:M 13 Jun 2025 15:22:52.416 # 警告:无法创建服务器 TCP 监听套接字 *:6379:bind:地址已在使用中
3649:M 13 Jun 2025 15:22:52.416 # 监听端口 6379 (TCP) 失败,正在中止。
109:M 13 Jun 2025 15:25:05.035 * 300 秒内发生 100 次更改。正在保存...
109:M 13 Jun 2025 15:25:05.041 * 后台保存由 pid 3823 启动
3823:C 13 Jun 2025 15:25:05.257 * DB 已保存到磁盘
3823:C 13 Jun 2025 15:25:05.257 * RDB 的 Fork CoW:当前 1 MB,峰值 1 MB,平均 0 MB
109:M 13 Jun 2025 15:25:05.342 * 后台保存成功终止
109:signal-handler (1749828411) 收到 SIGTERM,计划关闭...
109:M 13 Jun 2025 15:26:51.694 # 用户请求关闭...
109:M 13 Jun 2025 15:26:51.694 * 退出前保存最终 RDB 快照。
109:M 13 Jun 2025 15:26:51.710 * DB 已保存到磁盘
109:M 13 Jun 2025 15:26:51.710 # Redis 现在已准备好退出,再见...
引导失败,退出代码为 1
** 引导失败 ** 请向上滚动查找更早的错误消息,可能不止一条。
./discourse-doctor 可能有助于诊断问题。
5b720b35a25e026d9908c60a2f7c5bcf3725b16a0b282875e8a66ce5ace4d06b

我想将 stderr 作为附件上传,但作为新用户我无法这样做。也许日志的最后这部分,包含涉及 pups 的摘录,就足够了?

2025-06-13 15:26:51.615 UTC [42] LOG:  aborting any active transactions
2025-06-13 15:26:51.634 UTC [42] LOG:  background worker "logical replication launcher" (PID 56) exited with exit code 1
2025-06-13 15:26:51.634 UTC [51] LOG:  shutting down
2025-06-13 15:26:51.637 UTC [51] LOG:  checkpoint starting: shutdown immediate
2025-06-13 15:26:51.646 UTC [51] LOG:  checkpoint complete: wrote 15 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.001 s, sync=0.003 s, total=0.012 s; sync files=3, longest=0.003 s, average=0.001 s; distance=49 kB, estimate=243 kB
2025-06-13 15:26:51.659 UTC [42] LOG:  database system is shut down
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/config.rb:223:in `block (2 levels) in run_commands': Invalid run command filename (SyntaxError)
	from /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/config.rb:211:in `each'
	from /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/config.rb:211:in `block in run_commands'
	from /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/config.rb:210:in `each'
	from /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/config.rb:210:in `run_commands'
	from /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/config.rb:191:in `run'
	from /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/cli.rb:89:in `run'
	from /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/bin/pups:9:in `
	from /usr/local/bin/pups:25:in `load'
	from /usr/local/bin/pups:25:in `

我还需要查找其他能阐明问题的信息吗?感谢您的帮助!

顺便说一句,我用 YAML linter 检查了 app.yml 文件,但没有发现任何问题。我还尝试在不激活任何插件的情况下重新构建,但这没有起到任何作用。

建议您粘贴部分或全部 YML 文件 - 请注意删除密码和访问令牌。输出

看起来确实很可疑。我自己的 YML 文件很简单,没有命令,但也许您的很复杂。

2 个赞

谢谢 @Ed_S。我附上了 YML 文件,希望能从中找到线索。

app_yml_redacted.txt (4.7 KB)

谢谢。我唯一能看到的是,在我这里是

templates/web.ratelimited.template.yml
而你那里是
templates/web.ratelimited-whitelist.template.yml
那文件里可能存在语法错误?我想,它可能在
/var/discourse/templates/web.ratelimited-whitelist.template.yml
尽管在提到的其他任何模板中也可能存在语法错误。

1 个赞

我已将范围缩小到此文件:

/var/discourse/templates/web.ratelimited-whitelist.template.yml

下面是文件的内容。

params:
  reqs_per_second: 12
  burst_per_second: 12
  reqs_per_minute: 200
  burst_per_minute: 100
  conn_per_ip: 20

run:
  - replace:
    filename: "/etc/nginx/conf.d/discourse.conf"
    from: /server.+{/
    to: |
       geo $limit {
           default 1;
           XX.YYY.ZZ.ZZZ 0; # hubprod
           XXX.YY.ZZZ.ZZZ 0; # hubdev
       }

       map $limit $limit_key {
           0 "";
           1 $binary_remote_addr;
       }

       limit_req_zone $limit_key zone=flood:10m rate=$reqs_per_secondr/s;
       limit_req_zone $limit_key zone=bot:10m rate=$reqs_per_minuter/m;
       limit_req_status 429;
       limit_conn_zone $limit_key zone=connperip:10m;
       limit_conn_status 429;
       server {
  - replace:
    filename: "/etc/nginx/conf.d/discourse.conf"
    from: "/location @discourse {/"
    to: |
       location @discourse {
         limit_conn connperip $conn_per_ip;
         limit_req zone=flood burst=$burst_per_second nodelay;
         limit_req zone=bot burst=$burst_per_minute nodelay;

这里运行命令中有什么看起来不对的地方吗?

您的缩进与我预期的略有不同。而且您在末尾有一个空行。但我不知道这些是否是线索。

1 个赞

我认为在你(目前)的情况下,我会开始通过二分查找来删除这个 YML 的部分,以找出问题所在。你有几行空白行,还有两个 ‘replace’ 部分,你可以尝试一次删除一个。从删除主要部分开始,希望你能逐步缩小问题范围。

2 个赞

感谢您的帮助 @Ed_S,原来是我上面提到的 YAML 文件中存在一些缩进错误。不确定为什么任何 linter 都没有检测到它,但将有问题的文件与生产环境中的文件进行比较,很快就弄清了问题所在。

2 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.