问题描述
我的应用程序在 docker 容器中使用 JavaEE8、Openliberty 21.0.0.5 和 Microprofile 4.0 时遇到问题。
我无法从图像的“外部”设置 mpConfig-2.0 引入的 mp.config.profile
。
我的设置如下:
microprofile-config.properties
microprofile-config-dev.properties
microprofile-config-prod.properties
在src/main/resources/meta-inf/
内
在 server.xml 中正确激活功能并在启动时正确安装。
<featureManager onError="WARN">
<feature>microProfile-4.0</feature>
<feature>javaee-8.0</feature>
</featureManager>
每个阶段我还有一个 server.env,它通过 docker run 的 --env-file
传递给我的容器。
我的第一种方法是在 mp.config.profile
中设置 server.env
,因为它可以
在不同阶段运行图像时发生了变化。
例如mp.config.profile=dev
内 server-dev.env
等等。
但是 microprofile-config-dev.properties 的值从未与此设置一起使用。
<variable name="mp.config.profile" value="dev" />
在 server.xml
内。
然而,server.xml
在 docker 镜像中不是特定于阶段的,因此无法在不同阶段更改它。
有人建议这样做的正确方法是什么吗?
提前致谢
问候
解决方法
如果您想从 mp.config.profile
设置 server.env
,您可能需要改为设置 MP_CONFIG_PROFILE
。
由于点在环境变量名称中无效,MP Config defines some mapping rules 从环境变量中查找配置时。它将检查请求的名称,将非字母数字字符转换为下划线,然后再次将所有字母转换为大写。