假设我想要结合这些命令
RUN command_1
ENV FOO bar
RUN command_2
Run Code Online (Sandbox Code Playgroud)
成
RUN command_1 && export FOO=bar && command_2
Run Code Online (Sandbox Code Playgroud)
并且想知道用RUN exportvs 设置变量ENV是否相同.
换句话说,Dockerfile中这些命令之间有区别吗?
ENV FOO bar
Run Code Online (Sandbox Code Playgroud)
VS
RUN export FOO=bar
Run Code Online (Sandbox Code Playgroud) 是否有使用环境变量来控制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哲学?