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

Rails 7.1部署至Dokku生产环境时缺失secret_key_base的解决求助

解决Rails 7.1.3.2 + Dokku部署时的secret_key_base缺失问题

核心原因

预编译资产时用SECRET_KEY_BASE_DUMMY=1只是跳过了资产编译阶段的密钥校验,但Rails生产环境运行时必须有真实有效的secret_key_base来处理session加密、cookie签名等核心功能,所以会触发缺失错误。

解决步骤

1. 生成合法的secret_key_base值

在本地Rails项目根目录执行命令,生成安全随机的密钥:

rails secret

复制输出的长字符串,这就是你的生产环境secret_key_base。

2. 在Dokku服务器配置环境变量

登录到部署Dokku的服务器,执行以下命令(替换<你的应用名>和<生成的密钥>为实际内容):

dokku config:set <你的应用名> SECRET_KEY_BASE=<生成的密钥>

3. 验证配置并重新部署

  • 确认环境变量已成功设置:
dokku config <你的应用名>

检查输出中是否存在SECRET_KEY_BASE且值正确。

  • 重新推送代码触发部署:
git push dokku main

可选:使用Rails Credentials机制(进阶)

如果你的项目依赖Rails的credentials.yml.enc管理更多密钥,可按以下操作:

  1. 确保本地已创建生产环境凭据文件(若未创建,执行rails credentials:edit --environment production)
  2. 在Dokku中设置RAILS_MASTER_KEY环境变量(值为本地config/master.key的内容):
dokku config:set <你的应用名> RAILS_MASTER_KEY=<本地master.key内容>

Rails会自动用这个密钥解密credentials.yml.enc,从中读取secret_key_base。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 15:52:37