You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 7生产环境蓝屏错误排查求助(Dokku部署)

Rails 7 + Dokku 蓝屏错误排查建议

1. 确认Rails错误输出配置生效

虽然你已设置config.consider_all_requests_local = true,但要确保是在production环境配置文件(config/environments/production.rb)中修改的,且部署时该文件已正确推送。临时添加config.action_dispatch.show_exceptions = false到production配置里,强制页面显示错误栈(排查完成后务必改回,避免泄露敏感信息)。

2. 修正Rails日志输出到标准流

部分情况下Rails日志未正确输出到stdout/stderr,导致Dokku日志无法捕获。修改config/production.rb的日志配置:

config.logger = ActiveSupport::Logger.new(STDOUT)
config.log_level = :debug
config.log_tags = [:subdomain, :uuid]

重新部署后,用dokku logs my-app-name -t实时跟踪日志,触发错误页面,观察是否有新日志输出。

3. 验证资产预编译完整性

Rails 7默认的importmap/jsbundling/cssbundling可能出现预编译遗漏,导致页面加载失败触发500:

  • 执行dokku logs my-app-name | grep assets,检查预编译过程是否有报错
  • 进入容器查看资产文件:dokku run my-app-name ls public/assets,确认报错页面依赖的css/js文件存在
  • 若用importmap,检查config/importmap.rb的依赖是否正确,部署时是否执行了bin/importmap pin

4. 排查数据库数据与连接问题

部分页面报错可能源于数据库数据缺失或连接异常:

  • 进入容器启动production控制台:dokku run my-app-name rails c production,手动查询报错页面用到的模型数据,确认无缺失或异常
  • 检查数据库连接配置:dokku config:get my-app-name DATABASE_URL,确认格式正确;若用PostgreSQL,执行dokku postgres:info my-db-name检查服务状态

5. 检查Nginx静态文件处理规则

Nginx无法找到静态文件可能返回500但日志无记录:

  • 查看Dokku生成的Nginx配置:dokku nginx:show-config my-app-name,确认root指向正确的public目录
  • 临时关闭静态文件缓存,在Nginx配置中添加:
location ~ ^/assets/ {
  expires -1;
  add_header Cache-Control no-cache;
}

执行dokku nginx:reload后重新测试

6. 核对环境变量与文件权限

  • 执行dokku config:show my-app-name,确认SECRET_KEY_BASE、第三方API密钥等必要环境变量无缺失
  • 检查容器内文件权限:dokku run my-app-name ls -l public,确保public目录及子文件权限为www-data可读写

7. 逐步定位代码问题

创建极简测试页面(仅输出简单文本),确认能正常访问后,逐步添加报错页面的代码逻辑,直到触发错误,以此定位具体的代码问题点

内容的提问来源于stack exchange,提问作者user984621

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 13:49:52