是否有任何本机或普遍接受的方法来使用环境变量来控制 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 似乎太 hacky 了。
此外,它不允许您从 docker 主机获取变量(例如 CI 提供者的预安装 Redis 或 Postgres 凭据),而无需进一步破解。
有没有我还没有找到的解决方案?或者这是 Docker 的缺失部分?或者这是否在某种程度上违背了 Docker 哲学?