是否可以设置环境变量导入到每个docker容器中

是否可以设置环境变量导入到每个docker容器中

在 CI 环境中,我希望将用于对内部 Gems 服务器进行身份验证的凭据传递到在 CI 作业中启动的 Docker 容器中。我希望能够配置 Docker 守护进程,使其始终从代理上的环境中获取变量并将其推送到所有启动过的容器中。

目前可以做到这一点吗?

答案1

简单的方法:

$ export HOSTVAR=somevalue
$ docker run -it --rm -e CONTAINERVAR="${HOSTVAR}" someimage

这当然不会将更改推送到HOSTVAR正在运行的容器中,您还需要确保重新创建每个正在运行的容器都应该HOSTVAR改变。根据您的设置,这可能就足够了,即每个测试都在一个新容器中运行。

如果你有长期运行的容器,你将不得不依赖某种形式的共享配置守护进程,例如etcd在您的容器内运行。设置起来相当简单,并允许监听集中配置键/值存储中的更改。检查etcd 文档举个例子。

相关内容