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

Rails 7.0.4通过MRSK部署时遭遇secret_key_base缺失问题

Rails 7.0.4 + MRSK部署时assets:precompile密钥问题解决办法
  • 先修正凭证键名拼写:你提到凭证里设置的是secret_base_key,这是拼写错误!正确的键名应该是secret_key_base,立刻去config/credentials.yml.enc里修改,别搞反键名顺序。

  • 调整Dockerfile预编译命令:
    构建镜像时,要么生成临时密钥使用,要么让Rails接受dummy值。推荐用临时密钥的方式,修改Dockerfile里的预编译行:

    RUN RAILS_ENV=production SECRET_KEY_BASE=$(rake secret) ./bin/rails assets:precompile
    

    要是坚持用dummy值,得在config/environments/production.rb里加兜底配置:

    config.secret_key_base = ENV["SECRET_KEY_BASE"] || "dummy_asset_precompile_key"
    

    这样构建时不会因为dummy值触发密钥校验报错。

  • 给MRSK的构建阶段传递密钥:
    别只在config/deploy.yml的env里配置RAILS_MASTER_KEY,构建阶段也要单独传递——因为Docker的RUN步骤属于构建过程,和容器运行阶段的环境变量不共享。正确配置如下:

    build:
      args:
        RAILS_MASTER_KEY: <%= ENV["RAILS_MASTER_KEY"] %>
    env:
      secret:
        RAILS_MASTER_KEY: <%= ENV["RAILS_MASTER_KEY"] %>
    
  • 统一production.rb的配置逻辑:
    如果用加密凭证,就取消config.require_master_key = true的注释,同时别手动设置config.secret_key_base,让Rails自动从凭证里读取。要是手动设置了secret_key_base,会和凭证里的配置冲突,导致读取异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:42:57