pod 中配置的环境变量在 Jetty 中不可见

问题描述 投票:0回答:1

我有一个使用 Jetty 运行的 Web 应用程序。它部署为 Pod 并使用 jetty:jdk21 基础镜像。在 pod 中,我配置从秘密中提取的环境变量。

如果进入 pod 并运行 printenv 命令,我可以看到这些变量。但是,当我的 servlet 中的 Java 代码尝试访问相同的环境变量时,它返回 NULL。我使用 System.getenv。

另一方面,如果我列出 Java 中现有的 env 变量(循环遍历 getenv() 哈希图),我可以看到所有其他 env 变量,但看不到我在 pod 中设置的变量。就像我使用清单文件设置的环境变量具有不同的“状态”。

任何关于正在发生的事情的想法将非常感激!

java kubernetes jetty
1个回答
0
投票

简短回答,使用

docker run -d -u jetty jetty
。自述文件的安全部分解释说,

默认情况下,该映像以用户

root
启动,并在初始化后使用 Jetty 的
setuid
模块将权限授予用户
jetty
。位于
JETTY_BASE
/var/lib/jetty
目录归
jetty:jetty
所有(uid 999,gid 999)。

如果您希望图像以用户

jetty
立即启动,而不是以
root
启动,您可以使用
-u jetty
启动容器:

$ docker run -d -u jetty jetty

更长的答案,为 ROOT 设置环境变量是行不通的。您需要确保它们是为用户设置的

jetty
。只需以该用户身份运行容器即可确保您的环境变量按预期设置。

© www.soinside.com 2019 - 2024. All rights reserved.