使用Docker运行Site Inspector时遇Error 1的解决咨询
解决Site Inspector容器Exit Code 1(缺失secret_key_base)问题
问题场景
已克隆Site Inspector仓库,在Microsoft PowerShell执行以下命令启动容器:
git clone https://github.com/siteinspector/siteinspector.git cd siteinspector docker-compose up
redis、postgres镜像成功加载,但app容器以Exit Code 1退出,关键日志如下:
siteinspector-app-1 | rake aborted! siteinspector-app-1 | ArgumentError: Missing `secret_key_base` for 'production' environment, set this string with `bin/rails credentials:edit` siteinspector-app-1 | Tasks: TOP => db:migrate => db:load_config => environment siteinspector-app-1 exited with code 1
解决方案
该错误源于Rails生产环境必须配置secret_key_base用于加密会话和敏感数据,以下是两种可行解决方法:
方法1:注入secret_key_base环境变量
- 在项目根目录创建
.env文件,添加:
可通过本地Ruby环境运行SECRET_KEY_BASE=你的随机密钥rails secret生成合规密钥,或使用任意32位以上的随机字符串 - 编辑
docker-compose.yml,在app服务的environment节点中添加:- SECRET_KEY_BASE=${SECRET_KEY_BASE} - 重启容器:
docker-compose down docker-compose up
方法2:切换至开发环境运行(适合本地测试)
如果仅做本地测试,无需生产环境配置:
- 编辑
docker-compose.yml,在app服务的environment中添加:- RAILS_ENV=development - 或修改app服务的启动命令,加入环境变量:
command: bash -c "RAILS_ENV=development bundle install && rake db:migrate && rails server -b 0.0.0.0 -p 8080" - 重启容器:
docker-compose down docker-compose up
内容的提问来源于stack exchange,提问作者cmayne
相关产品推荐
相关产品推荐

