我在Heroku上构建了一个必须在Docker容器中运行的RoR应用程序。为此,我使用official Dockerfile。由于它在Heroku中很常见,我需要一些附加组件才能使这个应用程序完全正常运行。在生产中,变量DATABASE_URL
在我的应用程序中可用。但是,如果我尝试使用环境变量的其他附加组件(在我的情况下为Mailtrap),则变量不会在运行时复制到实例中。
所以我的问题很简单:如何在Heroku上执行时让docker实例知道环境变量?
您可能会问,我已经知道我们可以在docker-compose.yml
中指定 environment 指令。我想避免这种情况,以便能够通过项目存储库共享此文件。
答案 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
被忽略了。)