【问题标题】:set env variables for all the users is not working in docker为所有用户设置环境变量在 docker 中不起作用
【发布时间】:2021-01-06 09:48:39
【问题描述】:

我在 dockerfile 中设置了 env 变量,当我开始部署时,它并没有反映所有用户。除非我去终端并执行 source /etc/profile.d/ip.sh 那么只有它会影响到用户。如果不做这个活动,我们可以为所有用户设置这个值。如果是,我们需要如何实现它。

创建了shell脚本并添加到/etc/profile.d/ip.sh:

IP="1.1.1.1"
export IPADDR=$IP

Dockerfile:

COPY ip.sh /etc/profile.d
RUN chmod 644 /etc/profile.d/ip.sh
RUN . ./etc/profile.d/ip.sh

【问题讨论】:

  • 这是完整的 dockerfile 吗?
  • No.. 我刚刚添加了我在 docker 文件中使用的命令
  • 我只是想知道/tmp/ip.sh 是否在您的本地计算机中,还是已经存在/在图像本身中创建?
  • 基本上我已经在本地创建了脚本并将其复制到 /etc/profile.d 作为映像创建的一部分。
  • 那么你应该使用COPY ip.sh /etc/profile.d/ 来代替。 RUN 在构建期间在容器内执行。

标签: docker kubernetes openshift


【解决方案1】:

请阅读docker手册的environment variables section 你不应该得到你想要的原因是 Docker 的行为与完整的操作系统不同,因此你在启动时没有得到脚本。

这里有一些例子:

  • 在容器中设置环境变量

    您可以使用“环境”键在服务的容器中设置环境变量,就像使用 docker run -e VARIABLE=VALUE ...:

web:
  environment:
    - DEBUG=1
  • “env_file”配置选项? 您可以使用“env_file”选项将多个环境变量从外部文件传递到服务的容器,就像使用 docker run --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}"

【讨论】:

  • 我的问题是我想设置一个环境变量并在部署配置中使用该环境变量并启动 pod。这可能吗
  • 当我在容器级别设置环境变量时。当我打开新终端时,设置的变量显示为空白。
  • @user1485267 看看我从文档中引用的最后一个选项
  • 我没有看到在 kubernetes 中使用 env_file 的任何选项
  • 我做了如下回声“IP = 1.1.1.1”> /tmp/ip.env。现在我们如何在 Kubernetes 部署中使用这个值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多