环境变量 – 使用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 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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |