为所有用户设置环境变量在 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}"