将Heroku environement变量传递给Docker实例

时间:2016-01-15 13:17:16

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:1)

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