【问题标题】:Transmit Heroku environment variables to Docker instance将 Heroku 环境变量传输到 Docker 实例
【发布时间】:2016-04-21 02:22:48
【问题描述】:

我在 Heroku 上构建了一个必须在 Docker 容器内运行的 RoR 应用程序。为此,我使用official Dockerfile。由于这在 Heroku 中很常见,我需要一些附加组件才能使这个应用程序完全运行。在生产中,变量DATABASE_URL 在我的应用程序中可用。但是,如果我尝试使用其他一些使用环境变量的附加组件(在我的情况下为Mailtrap),则变量不会在运行时复制到实例中。

所以我的问题很简单:如何让 docker 实例在 Heroku 上执行时知道环境变量?

您可能会问,我已经知道我们可以在docker-compose.yml 中指定一个环境 指令。我想避免这种情况,以便能够通过项目存储库共享此文件。

【问题讨论】:

    标签: ruby-on-rails ruby heroku docker environment-variables


    【解决方案1】:

    我没有找到任何关于它的文档,但似乎 Heroku 最近改变了它在 Docker 容器中处理 config vars 的方式:它们现在自动复制(来自 docker-compose.yml 的值是只是忽略)。

    【讨论】:

      【解决方案2】:

      不提交敏感配置文件的解决方法是创建一个带有空字段的 docker-compose.yml**.example** 并提交它,然后将 docker-compose.yml 添加到 .gitignore。

      由于这在 heroku 上不太实用,您可以使用--env docker 开关将任何变量添加到容器的环境中。

      像这样:docker run --env "MY_VAR=yolo" my_image:my_tag

      您还可以从安全站点提供私有 docker-config.yml,heroku 可以访问该站点(在您的情况下,这将是我的首选解决方案)。

      【讨论】:

      • 我们使用私有 S3 存储桶进行配置,以完全按照您在上一句中引用的内容进行操作。哟洛。
      • 我喜欢你为 docker-compose.yml 创建示例文件的想法,它非常简单。然而,我更关心的是在添加附加组件时模仿经典 Heroku 的工作流程(即自动将变量添加到 Heroku 上正在运行的容器中)。
      猜你喜欢
      • 2021-11-19
      • 1970-01-01
      • 2014-09-15
      • 2018-09-29
      • 2018-12-02
      • 2018-09-18
      • 2020-12-07
      • 2020-11-07
      • 2018-08-15
      相关资源
      最近更新 更多