如何在容器中加载 Docker 环境变量
How to load Docker environment variables in container
我正在使用 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 中定义。我期待 运行 脚本作为根用户
登录 shell('-l' 标志)可以让我访问这些变量,但事实并非如此。
我知道我需要的变量在 /proc/1/environ 但我不知道如何加载它们,因为
例如在 .profile 文件中为 root.
添加内容
谢谢。
有点棘手,但我可以通过包含以下行在 ExecStart 属性 的 /some/script.sh 中加载环境变量:
export `xargs --null --max-args=1 echo < /proc/1/environ`
我正在使用 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 中定义。我期待 运行 脚本作为根用户 登录 shell('-l' 标志)可以让我访问这些变量,但事实并非如此。 我知道我需要的变量在 /proc/1/environ 但我不知道如何加载它们,因为 例如在 .profile 文件中为 root.
添加内容谢谢。
有点棘手,但我可以通过包含以下行在 ExecStart 属性 的 /some/script.sh 中加载环境变量:
export `xargs --null --max-args=1 echo < /proc/1/environ`