我们有一个docker容器,并且在其中运行的程序希望设置许多envvar。有几种方法可以做到这一点,我很好奇什么是正确的方法:
1-将envvars放入配置库中,将其添加为材料,使用docker --env-file标志传递文件。缺点:传递10个envvar似乎有点过分。
2-在“作业配置”选项卡中定义envvar。在Docker构建期间将其导出。缺点:每个新作业都必须手动设置envvar,添加一个envvar将需要在一处更改所有作业。
3-在“作业配置”选项卡中定义envvar。在docker运行期间使用-e标志传递它们。缺点:每个新作业都必须手动设置envvar,添加一个envvar将需要在两个位置更改每个作业。
还有其他方法吗?
答案 0 :(得分:1)
还有另一种选择:编写一个小的Shell脚本,该脚本将所有以特定前缀开头的环境变量传递到docker
。
例如,您可以将DOCKER_A=a
和DOCKER_B=b
转换为-e A=a -e B=b
,并将其称为
docker $(./munge_env_vars) ...
然后,您可以将所有环境变量放在一个位置(可以放在GoCD配置中,或者可以在source
的版本控制下的Shell脚本中),而在添加另一个位置时无需修改两个位置env变量。