Rails 5.1 Capstrano使用Secures.yml.key进行部署

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (112)

我试图部署到与capistrano的分期环境。我已经设置了我的加密秘密并在开发中进行了测试,并且秘密显示可用。我已经设置了登台环境配置read_encrypted_secrets = true。我的密钥文件被git忽略。我已经进入我的临时环境,并将其secrets.yml.key放入app_name/current/config目录中。我正在部署到AWS EC2实例。我没有使用RAILS_MASTER_KEY环境变量。

当我运行cap staging deploy并选择我的发布标签时,我遇到了这个错误deploy:migrating bundle exec rake db:migrate

01 rake aborted!
01 Rails::Secrets::MissingKeyError: Missing encryption key to decrypt secrets with. Ask your team for your master key and put it in ENV["RAILS_MASTER_KEY"]

我在服务器上有正确的密钥,为什么没有轨道找到/使用它?

提问于
用户回答回答于

app_name/current路径只是最新Capistrano版本的符号链接。这意味着app_name/current/config每次跑步都会改变内容cap staging deploy。如果通过ssh手动将文件添加到该目录,那么在后续部署中将不再存在该文件。

将配置文件添加到将在所有部署中保留的服务器的正确方法是将其放置在共享目录中。特别:

  1. 通过ssh(或scp),将密钥文件放在app_name/shared/config/secrets.yml.key
  2. 在本地,deploy.rb添加以下内容: append :linked_files, "config/secrets.yml.key"

现在运行cap staging deploy

用户回答回答于

这也适用于Rails 5.2和加密的ENV变量:

append :linked_files, "config/master.key"

扫码关注云+社区

领取腾讯云代金券