【问题标题】:How to make environment variable visible to non root users inside the container?如何使环境变量对容器内的非 root 用户可见?
【发布时间】:2021-06-10 18:09:56
【问题描述】:

我正在尝试传递环境变量以从 docker 容器内的 XML 文件中读取,该容器运行广泛的应用程序服务并托管在 REHL 7 映像中。

到目前为止我做了什么:

  1. 我已经创建了一个环境文件作为键值对,例如:FILESERVICE_MAX_POOL_SIZE=5

  2. 我通过引用环境文件来运行docker:docker run -d --env-file ./ENV_VARIABLES <myImage>

  3. 在 Dockerfile 中,我复制了我需要的 xml 模板:COPY dockerfiles/standalone.xml /opt/wildfly/standalone/configuration/standalone.xml

  4. 在 XML 模板中,我尝试引用环境变量:<max-pool-size>${env.FILESERVICE_MAX_POOL_SIZE}</max-pool-size>

我可以以 root 身份查看运行容器中的那些环境变量,但不能以需要它们的用户身份查看。如何使属性对 root 以外的特定用户可见?

很明显我在这里做错了什么只是不确定是什么?

提前感谢您的帮助。

【问题讨论】:

  • 你的图片基于什么?
  • 它基于 REHL 7,我也更新了问题
  • 您如何在容器中测试 root 与用户?请包括两个运行命令和每个命令的 env 输出。
  • 通过提升为 root 并确保我是 whoami 的 root。然后我以 root 身份运行 env 并看到属性。然后我运行 su - wildfly 并重复该过程

标签: docker dockerfile


【解决方案1】:

问题已解决:wildfly 看不到属性,因为在我的启动脚本中我没有为 sudo 添加 -E 标志来保留环境变量。

【讨论】:

  • 很好,也许envsubst 也可以帮助你,基本上你可以source <env--file> 然后envsubst < standalone_template.xml > standalone.xml
猜你喜欢
  • 2021-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-22
  • 2014-02-09
  • 1970-01-01
相关资源
最近更新 更多