编辑:好吧,花了我 18 个小时,但看起来定义 DISCOURSE_CDN_URL 会导致(至少)此站点在恢复后无法重建和/或正常运行。我想接下来要测试的是在不设置 DISCOURSE_CDN_URL 的情况下进行构建,然后设置该环境变量再启动容器。
我之前了解的情况
我昨天就遇到了这个问题,以为已经解决了,但结果是我恢复了一个一个月前的数据库。恢复最近的数据库会导致站点崩溃。
我能够从零开始构建站点,所以问题不在代码或任何标准插件上。但是,在我恢复数据库后,站点就宕机了,即使删除数据库也无法进行重建。因此,我推测问题出在压缩 JavaScript 时读取的某个文件中。
我尝试移除 onebox.scss 中所有的 background: image-url,这使得站点能够重建,但显示效果完全乱了。所以这些错误只是问题的症状,而非根本原因。
在恢复数据库(和文件)或重建时,我在 Rails 日志中看到了如下错误:
I, [2019-12-22T21:21:25.532604 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
注意:继承 Faraday::Error::ClientError 已弃用;请使用 Faraday::ClientError。该用法将在 1.0 版本或之后被移除。
Faraday::Error::ClientError.inherited 调用自 /var/www/discourse/plugins/discourse-github/gems/2.6.5/gems/octokit-4.14.0/lib/octokit/middleware/follow_redirects.rb:14。
> 正在生成深色和浅色主题
[SassC::FunctionsHandler] nil:NilClass 没有 `protocol` 方法
rake 中止!
Discourse::ScssError: 错误:C 函数 image-url 出错:nil:NilClass 没有 `protocol` 方法
位于 app/assets/stylesheets/common/base/onebox.scss 第 90 行,函数 `image-url` 中
位于 app/assets/stylesheets/common/base/onebox.scss 第 90 行,混入 `onebox-favicon` 中
位于 app/assets/stylesheets/common/base/onebox.scss 第 110 行
位于 app/assets/stylesheets/common.scss 第 34 行
位于 desktop.scss 第 1 行
>>> background: image-url("favicons/#{$image}.png") no-repeat 0% 50%;
----------------^
/var/www/discourse/lib/stylesheet/manager.rb:183:in `rescue in compile'
/var/www/discourse/lib/stylesheet/manager.rb:171:in `compile'
/var/www/discourse/lib/stylesheet/manager.rb:80:in `block (2 levels) in stylesheet_details'
/var/www/discourse/lib/stylesheet/manager.rb:66:in `each'
/var/www/discourse/lib/stylesheet/manager.rb:66:in `block in stylesheet_details'
/var/www/discourse/lib/stylesheet/manager.rb:64:in `synchronize'
/var/www/discourse/lib/stylesheet/manager.rb:64:in `stylesheet_details'
/var/www/discourse/lib/stylesheet/manager.rb:34:in `stylesheet_data'
/var/www/discourse/app/models/theme.rb:280:in `block in refresh_message_for_targets'
/var/www/discourse/app/models/theme.rb:279:in `map'
/var/www/discourse/app/models/theme.rb:279:in `refresh_message_for_targets'
/var/www/discourse/app/models/theme.rb:267:in `notify_theme_change'
/var/www/discourse/app/models/theme.rb:275:in `notify_theme_change'
/var/www/discourse/app/models/theme.rb:61:in `block in <class:Theme>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.1/lib/active_support/callbacks.rb:429:in `instance_exec'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.1/lib/active_support/callbacks.rb:429:in `block in make_lambda'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.1/lib/active_support/callbacks.rb:239:in `block in halting_and_conditional'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.1/lib/active_support/callbacks.r