如何在容器中加载Docker环境变量

时间:2019-09-29 10:01:49

标签: docker environment-variables systemd

我正在使用systemd构建基于ubuntu图像的图像。我需要开始 TigerVNC作为一项服务,取决于我在自己的环境中定义的一些环境变量 Dockerfile,就像密码一样。

FROM ubuntu-systemd

ENV VNC_PW="some-password"

ENTRYPOINT ["/lib/systemd/systemd"]

此服务的单位文件的行为:

ExecStart=/usr/sbin/runuser -l root -c "/some/script.sh" 

由于systemd具有自己的环境,因此我无法访问环境变量 在我的Dockerfile中定义。我期望以root身份运行脚本 登录外壳程序(“ -l”标志)可以让我访问这些变量,但事实并非如此。 我知道我需要的变量在 / proc / 1 / environ 中,但是我不知道如何加载它们,因为 例如在 .profile 文件中为root添加一些内容。

谢谢。

1 个答案:

答案 0 :(得分:0)

有点棘手,但是我可以通过包含以下行来将环境变量加载到ExecStart属性的/some/script.sh中:

export `xargs --null --max-args=1 echo < /proc/1/environ`