【问题标题】:GCloud Rails application and keeping Redis password in an .env fileGCloud Rails 应用程序并将 Redis 密码保存在 .env 文件中
【发布时间】:2021-09-02 15:33:14
【问题描述】:

我在 Google Cloud 上托管了一个 Rails 5.2.3 (Ruby 2.6.3) 项目。

我目前正在设置 Sidekiq 和 Redis,关注 this guide from Google's docs

我决定使用文档的Deploying to App Engine flexible environment 部分中的foreman 选项,并且一直在寻找app.yaml 文件。具体来说,我被困在如何提供 Redis URL、Redis 密码和 Rails 密钥而不在我的 git 历史记录中以明文形式公开它。

我在 GCloud 网站上的任何地方都找不到有关此的信息。我发现的唯一提及的 ENV 文件是 these pages of the GCloud docs,但这些只是为了让我可以指定特定的 ENV 变量以供我在 GCloud 上的应用程序使用,这在这种情况下不适用于我。

有什么方法可以让我从我的.env 中读取app.yaml 文件,或者更好的是从我的secrets.yaml 文件中读取?

【问题讨论】:

    标签: ruby-on-rails google-app-engine google-cloud-platform redis sidekiq


    【解决方案1】:

    我今天实际上意识到我误解了这些文档,尽管 Google 一开始并没有很好地说明这一点。

    如果您查看我的 OP 中的 docs I referenced,他们确实澄清了 environment_variables 只是让您可以通过 app.yaml 文件将 ENV 变量传递到应用程序中。我实际上不需要从文档中提供此部分

    env_variables:
      REDIS_URL: redis://[REDIS_IP_ADDRESS]:6379
      REDIS_PASSWORD: [PASSWORD]
      SECRET_KEY_BASE: [SECRET_KEY]
    

    上面的内容可以简单地在 sidekiq.rb 初始化器中提供一个 .envcredentials.yml 文件,以确保安全。

    # initializers/sidekiq.rb
    
    Sidekiq.configure_server do |config|
      Rails.env.production? ?
        config.redis = { url: Rails.application.credentials.redis_url,
                         password: Rails.application.credentials.redis_password
        } :
        config.redis = { url: 'redis://localhost:6379/1' }
    end
    
    Sidekiq.configure_client do |config|
      Rails.env.production? ?
        config.redis = { url: Rails.application.credentials.redis_url,
                         password: Rails.application.credentials.redis_password
        } :
        config.redis = { url: 'redis://localhost:6379/1' }
    end
    

    我已经向 Docs 推送了一个 PR,以便让未来的用户更清楚地了解这个选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-16
      • 1970-01-01
      • 2015-02-07
      • 1970-01-01
      • 2016-01-27
      • 2011-09-03
      • 2011-11-07
      • 1970-01-01
      相关资源
      最近更新 更多