环境变量 – 使用Docker的12factor配置方法

前端之家收集整理的这篇文章主要介绍了环境变量 – 使用Docker的12factor配置方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

是否存在使用环境变量来控制Docker行为的原生或普遍接受的方法,即以12种方式?

我见过的唯一与语言无关的方法是使用-e变量污染docker run命令.我见过的最易维护的解决方案是使用cat和sed的组合来使用.env文件生成CLI参数:https://twitter.com/DataKyle/status/422843345120296960

我们目前使用Vagrant for dev,一个用于测试和部署的CI / CD托管提供商,以及AWS Elastic Beanstalk作为暂存和生产PAAS.我们的应用程序有超过100个可配置参数,其中大部分都设置为默认值,但每个环境仍需要自定义大约10-20个.使用像这样的大量命令行变量运行docker似乎太麻烦了.

此外,它不允许您从docker主机中获取变量(例如CI提供程序预先安装的Redis或Postgres凭据),而无需进一步破解.

我有没有找到解决方案?
或者这是Docker的缺失部分?
或者这是否在某种程度上哲学上反对Docker哲学?

最佳答案
Docker 0.10.0及更新版本(2014年4月8日)接受docker run –env-file< filename>,它允许您使用.env类文件提供docker的运行环境.

此外,您可以让docker进一步交互: – volumes-from可以从引用的容器中挂载所有卷,而–link让容器知道引用容器的公开端口的详细信息.

虽然Docker run reference目前有点弱,但您可以在CLI参考号run section以及container linking reference中找到所有详细信息.

至于从容器开始的内容.通常我建议启动一个shell脚本,它设置默认环境变量(沿着:${ENV:= default_value}行),导出它们,然后执行一个可执行文件.此可执行文件可以是前台中的所需应用程序,也可以是runit或supervisord之类的init替换.

我不建议在你的docker中运行sshd,如果它不是系统的一部分(例如,gitlab的容器应该包含sshd,因为它通过ssh提供git repo访问).出于维护或调试目的,我建议使用nsenter.

猜你在找的Docker相关文章