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