为所有用户设置环境变量在 docker 中不起作用
set env variables for all the users is not working in docker
我在 dockerfile 中设置 env 变量,当我开始部署时,它不会反映所有用户。除非我去终端并执行 source /etc/profile.d/ip.sh 然后它才会对用户产生影响。如果不这样做 activity 我们可以将此值设置为所有用户。如果是,我们需要如何实现它。
创建了 shell 脚本并添加到 /etc/profile.d/ip.sh
:
IP="1.1.1.1"
export IPADDR=$IP
Docker 文件:
COPY ip.sh /etc/profile.d
RUN chmod 644 /etc/profile.d/ip.sh
RUN . ./etc/profile.d/ip.sh
请阅读docker手册的environment variables section
你不应该得到你想要的东西的原因是 Docker 的行为与完整的 OS 不同,因此你在启动时没有得到脚本。
这里有一些例子:
在容器中设置环境变量
您可以使用“environment”键在服务的容器中设置环境变量,就像 docker 运行 -e VARIABLE=VALUE ...:[=14=]
web:
environment:
- DEBUG=1
- “env_file”配置选项
您可以使用“env_file”选项将多个环境变量从外部文件传递到服务的容器,就像使用 docker 运行 --env-file=FILE ... 一样:
web:
env_file:
- web-variables.env
- “.env”文件
您可以在名为 .env:
的环境文件中为 Compose 文件中引用的或用于配置 Compose 的任何环境变量设置默认值
$ cat .env
TAG=v1.5
$ cat docker-compose.yml
version: '3'
services:
web:
image: "webapp:${TAG}"
我在 dockerfile 中设置 env 变量,当我开始部署时,它不会反映所有用户。除非我去终端并执行 source /etc/profile.d/ip.sh 然后它才会对用户产生影响。如果不这样做 activity 我们可以将此值设置为所有用户。如果是,我们需要如何实现它。
创建了 shell 脚本并添加到 /etc/profile.d/ip.sh
:
IP="1.1.1.1"
export IPADDR=$IP
Docker 文件:
COPY ip.sh /etc/profile.d
RUN chmod 644 /etc/profile.d/ip.sh
RUN . ./etc/profile.d/ip.sh
请阅读docker手册的environment variables section 你不应该得到你想要的东西的原因是 Docker 的行为与完整的 OS 不同,因此你在启动时没有得到脚本。
这里有一些例子:
在容器中设置环境变量
您可以使用“environment”键在服务的容器中设置环境变量,就像 docker 运行 -e VARIABLE=VALUE ...:[=14=]
web:
environment:
- DEBUG=1
- “env_file”配置选项 您可以使用“env_file”选项将多个环境变量从外部文件传递到服务的容器,就像使用 docker 运行 --env-file=FILE ... 一样:
web:
env_file:
- web-variables.env
- “.env”文件 您可以在名为 .env: 的环境文件中为 Compose 文件中引用的或用于配置 Compose 的任何环境变量设置默认值
$ cat .env
TAG=v1.5
$ cat docker-compose.yml
version: '3'
services:
web:
image: "webapp:${TAG}"