我正在尝试构建一个新的 Discourse Docker 镜像,但似乎它在迁移阶段失败了。
I, [2020-12-15T15:02:28.688540 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
I, [2020-12-15T15:04:19.530701 #1] INFO -- :
I, [2020-12-15T15:04:19.530966 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile'
清理临时文件
捆绑资源
I, [2020-12-15T15:04:36.448680 #374] INFO -- : 写入 /var/www/discourse/public/assets/vendor-bdb3fefe8aefde7bf6aef331a6edd24482502b370ed9f6f299836c72ee6a843c.js
I, [2020-12-15T15:04:43.818563 #374] INFO -- : 写入 /var/www/discourse/public/assets/admin-073db5e5695d9f3834b9ad41d66ef30a02b9ca85fc9c95f272257ea9c7a67f21.js
I, [2020-12-15T15:04:43.822864 #374] INFO -- : 写入 /var/www/discourse/public/assets/browser-detect-115ab5953de1b5bb122bfb26b757f5391dd8d1d2aef2b81baf7b59aee99d9f34.js
.
.
.
.
.
.
.
.
.
.
.
35:M 15 Dec 2020 15:06:27.009 * 300 秒内发生 10 次更改。正在保存...
35:M 15 Dec 2020 15:06:27.010 * 后台保存已由进程 ID 1066 启动
1066:C 15 Dec 2020 15:06:27.010 # 无法打开 RDB 文件 dump.rdb(位于服务器根目录 /pups)以进行保存:权限被拒绝
35:M 15 Dec 2020 15:06:27.110 # 后台保存错误
35:M 15 Dec 2020 15:06:33.020 * 300 秒内发生 10 次更改。正在保存...
35:M 15 Dec 2020 15:06:33.020 * 后台保存已由进程 ID 1067 启动
1067:C 15 Dec 2020 15:06:33.020 # 无法打开 RDB 文件 dump.rdb(位于服务器根目录 /pups)以进行保存:权限被拒绝
35:M 15 Dec 2020 15:06:33.121 # 后台保存错误
35:M 15 Dec 2020 15:06:39.030 * 300 秒内发生 10 次更改。正在保存...
35:M 15 Dec 2020 15:06:39.031 * 后台保存已由进程 ID 1068 启动
1068:C 15 Dec 2020 15:06:39.031 # 无法打开 RDB 文件 dump.rdb(位于服务器根目录 /pups)以进行保存:权限被拒绝
35:M 15 Dec 2020 15:06:39.131 # 后台保存错误
gzip -f -c -9 /var/www/discourse/public/assets/application-42d4413fabab7a4b12e0c25fb01f736af560aa283089071a8493f37c9b042a4a.js > /var/www/discourse/public/assets/application-42d4413fabab7a4b12e0c25fb01f736af560aa283089071a8493f37c9b042a4a.js.gz
brotli -f --quality=11 /var/www/discourse/public/assets/application-42d4413fabab7a4b12e0c25fb01f736af560aa283089071a8493f37c9b042a4a.js --output=/var/www/discourse/public/assets/application-42d4413fabab7a4b12e0c25fb01f736af560aa283089071a8493f37c9b042a4a.js.br
35:M 15 Dec 2020 15:06:45.041 * 300 秒内发生 10 次更改。正在保存...
35:M 15 Dec 2020 15:06:45.042 * 后台保存已由进程 ID 1072 启动
1072:C 15 Dec 2020 15:06:45.042 # 无法打开 RDB 文件 dump.rdb(位于服务器根目录 /pups)以进行保存:权限被拒绝
35:M 15 Dec 2020 15:06:45.142 # 后台保存错误
完成压缩 application-42d4413fabab7a4b12e0c25fb01f736af560aa283089071a8493f37c9b042a4a.js:耗时 25.87 秒
完成压缩所有 JS 文件:耗时 83.62 秒
开始编译 CSS:2020-12-15 15:06:49 UTC
编译默认 CSS:2020-12-15 15:06:49 UTC
预编译目标:桌面 深色模式
35:M 15 Dec 2020 15:06:51.051 * 300 秒内发生 10 次更改。正在保存...
35:M 15 Dec 2020 15:06:51.051 * 后台保存已由进程 ID 1074 启动
1074:C 15 Dec 2020 15:06:51.051 # 无法打开 RDB 文件 dump.rdb(位于服务器根目录 /pups)以进行保存:权限被拒绝
35:M 15 Dec 2020 15:06:51.151 # 后台保存错误
rake 终止!
Redis::CommandError: ERR 运行脚本时出错(调用 f_45fe64238f6598e6c505af0aad74b4e178e891f4):@user_script:14: @user_script: 14: -MISCONF Redis 已配置为保存 RDB 快照,但目前无法持久化到磁盘。可能修改数据集的命令已被禁用,因为此实例配置为在 RDB 快照失败时报告写入错误(stop-writes-on-bgsave-error 选项)。请检查 Redis 日志以获取有关 RDB 错误的详细信息。
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/redis-4.2.5/lib/redis/client.rb:132:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.2.0/lib/mini_profiler/profiling_methods.rb:85:in `block in profile_method'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/redis-4.2.5/lib/redis.rb:2585:in `block in _eval'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/redis-4.2.5/lib/redis.rb:69:in `block in synchronize'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/redis-4.2.5/lib/redis.rb:69:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/redis-4.2.5/lib/redis.rb:2584:in `_eval'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/redis-4.2.5/lib/redis.rb:2636:in `evalsha'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/message_bus-3.3.4/lib/message_bus/backends/redis.rb:425:in `cached_eval'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/message_bus-3.3.4/lib/message_bus/backends/redis.rb:144:in `publish'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/message_bus-3.3.4/lib/message_bus.rb:382:in `publish'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/message_bus-3.3.4/lib/message_bus/distributed_cache.rb:80:in `publish'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/message_bus-3.3.4/lib/message_bus/distributed_cache.rb:90:in `set'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/message_bus-3.3.4/lib/message_bus/distributed_cache.rb:135:in `[]='
/var/www/discourse/app/models/theme.rb:142:in `get_set_cache'
/var/www/discourse/app/models/theme.rb:158:in `components_for'
/var/www/discourse/app/models/theme.rb:185:in `block in transform_ids'
/var/www/discourse/app/models/theme.rb:142:in `get_set_cache'
/var/www/discourse/app/models/theme.rb:177:in `transform_ids'
/var/www/discourse/app/models/theme.rb:371:in `list_baked_fields'
/var/www/discourse/app/models/theme.rb:367:in `resolve_baked_field'
/var/www/discourse/lib/stylesheet/manager.rb:423:in `color_scheme_digest'
/var/www/discourse/lib/stylesheet/manager.rb:361:in `digest'
/var/www/discourse/lib/stylesheet/manager.rb:339:in `stylesheet_filename'
/var/www/discourse/lib/stylesheet/manager.rb:300:in `source_map_filename'
/var/www/discourse/lib/stylesheet/manager.rb:251:in `compile'
/var/www/discourse/lib/stylesheet/manager.rb:169:in `block (2 levels) in precompile_css'
/var/www/discourse/lib/stylesheet/manager.rb:162:in `each'
/var/www/discourse/lib/stylesheet/manager.rb:162:in `block in precompile_css'
/var/www/discourse/lib/stylesheet/manager.rb:161:in `each'
/var/www/discourse/lib/stylesheet/manager.rb:161:in `precompile_css'
/var/www/discourse/lib/tasks/assets.rake:54:in `block (2 levels) in <main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-2.5.0/lib/rails_multisite/connection_management.rb:76:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-2.5.0/lib/rails_multisite/connection_management.rb:86:in `each_connection'
/var/www/discourse/lib/tasks/assets.rake:47:in `block in <main>'
/var/www/discourse/lib/tasks/assets.rake:331:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.1/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
任务:TOP => assets:precompile:css
(通过运行任务并添加 --trace 参数可查看完整堆栈跟踪)
I, [2020-12-15T15:06:53.012968 #1] INFO -- : 正在下载 MaxMindDB...
压缩 JavaScript 并生成源映射
I, [2020-12-15T15:06:53.013385 #1] INFO -- : 终止异步进程
I, [2020-12-15T15:06:53.013424 #1] INFO -- : 向 exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 35 发送 TERM 信号
35:signal-handler (1608044813) 收到 SIGTERM,计划关闭...
35:M 15 Dec 2020 15:06:53.054 # 用户请求关闭...
35:M 15 Dec 2020 15:06:53.054 * 退出前保存最终 RDB 快照。
35:M 15 Dec 2020 15:06:53.054 # 无法打开 RDB 文件 dump.rdb(位于服务器根目录 /pups)以进行保存:权限被拒绝
35:M 15 Dec 2020 15:06:53.054 # 尝试保存数据库时出错,无法退出。
35:M 15 Dec 2020 15:06:53.054 # 收到 SIGTERM,但在尝试关闭服务器时出错,请检查日志以获取更多信息
35:M 15 Dec 2020 15:06:57.060 * 300 秒内发生 10 次更改。正在保存...
35:M 15 Dec 2020 15:06:57.060 * 后台保存已由进程 ID 1078 启动
1078:C 15 Dec 2020 15:06:57.061 # 无法打开 RDB 文件 dump.rdb(位于服务器根目录 /pups)以进行保存:权限被拒绝
35:M 15 Dec 2020 15:06:57.161 # 后台保存错误
I, [2020-12-15T15:07:03.014092 #1] INFO -- : exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid:35 未能正常终止,强制终止!
失败
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' 执行失败,返回码为 #<Process::Status: pid 372 exit 1>
失败位置:/pups/lib/pups/exec_command.rb:112:in `spawn'
exec 执行失败,参数为 {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
be9c92f00a4814e5e9ebcdb06f25232b03f7522390b97c157085c2f7ef7f3387
** 引导失败 ** 请向上滚动查看更早的错误消息,可能不止一条。
简而言之,我看到的错误如下:
68:C 15 Dec 2020 15:06:39.031 # 无法打开 RDB 文件 dump.rdb(位于服务器根目录 /pups)以进行保存:权限被拒绝
35:M 15 Dec 2020 15:06:39.131 # 后台保存错误
35:M 15 Dec 2020 15:06:51.051 * 后台保存已由进程 ID 1074 启动
1074:C 15 Dec 2020 15:06:51.051 # 无法打开 RDB 文件 dump.rdb(位于服务器根目录 /pups)以进行保存:权限被拒绝
35:M 15 Dec 2020 15:06:51.151 # 后台保存错误
rake 终止!
Redis::CommandError: ERR 运行脚本时出错(调用 f_45fe64238f6598e6c505af0aad74b4e178e891f4):@user_script:14: @user_script: 14: -MISCONF Redis 已配置为保存 RDB 快照,但目前无法持久化到磁盘。可能修改数据集的命令已被禁用,因为此实例配置为在 RDB 快照失败时报告写入错误(stop-writes-on-bgsave-error 选项)。请检查 Redis 日志以获取有关 RDB 错误的详细信息。
我的 app.yaml 文件内容如下:
templates:
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
- "templates/redis.template.yml"
env:
LANG: en_US.UTF-8
UNICORN_WORKERS: 8
DISCOURSE_DB_USERNAME: discourse
DISCOURSE_DB_PASSWORD: "xxxxx"
DISCOURSE_DB_HOST: "xxxxx"
DISCOURSE_REDIS_HOST: 127.0.0.1
DISCOURSE_REDIS_PORT: "6379"
DISCOURSE_DB_NAME: discourse_prod_2
DISCOURSE_DEVELOPER_EMAILS: 'xxxxxxx'
DISCOURSE_HOSTNAME: 'localhost'
DISCOURSE_DB_PORT: "5301"
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- mkdir -p plugins
- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/discourse/discourse-solved.git
- git clone https://github.com/discourse/discourse-voting.git
- git clone https://github.com/discourse/discourse-slack-official.git
- git clone https://github.com/discourse/discourse-assign.git
run:
- exec:
cd: /var/www/discourse
cmd:
- sed -i 's/GlobalSetting.serve_static_assets/true/' config/environments/production.rb
出于安全考虑,我已隐藏密码、主机名和邮箱。对于 Redis,我正在运行一个独立的 Docker 容器。我能够在 localhost 和指定端口上连接到它。
请告诉我是否遗漏了什么。