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
相关产品推荐
相关产品推荐

