我正在使用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添加一些内容。
谢谢。
答案 0 :(得分:0)
有点棘手,但是我可以通过包含以下行来将环境变量加载到ExecStart属性的/some/script.sh中:
export `xargs --null --max-args=1 echo < /proc/1/environ`