加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 03:37:52 所属栏目:安全 来源:网络整理
导读:是否存在使用环境变量来控制Docker行为的原生或普遍接受的方法,即以12种方式? 我见过的唯一与语言无关的方法是使用-e变量污染docker run命令.我见过的最易维护的解决方案是使用cat和sed的组合来使用.env文件生成CLI参数:https://twitter.com/DataKyle/stat

是否存在使用环境变量来控制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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读