rga*_*eth 8 environment-variables 12factor docker
是否有使用环境变量来控制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哲学?
小智 4
Docker 0.10.0 及更新版本(2014 年 4 月 8 日)接受docker run --env-file <filename>,它允许您向 docker 的运行环境提供.env类似文件。
此外,您可以让docker进一步交互:--volumes-from可以挂载引用容器中的所有卷,并--link让容器知道引用容器公开端口的详细信息。
虽然Docker 运行参考目前有点薄弱,但您可以在 CLI 参考的运行部分以及容器链接参考中找到所有详细信息。
至于从容器开始。通常我建议启动一个 shell 脚本,它设置默认环境变量(沿着: ${ENV:=default_value}),导出它们,然后exec是单个可执行文件。该可执行文件可以是前台所需的应用程序,也可以是 init 替代品,例如runit或supervisord。
如果它不是系统的一部分,我不建议sshd在 docker 内运行(例如,gitlab 的容器应包含 sshd,因为它通过 ssh 提供 git repo 访问)。出于维护或调试目的,我建议nsenter改为使用。
| 归档时间: |
|
| 查看次数: |
1307 次 |
| 最近记录: |