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