I have a problem with my application using JavaEE8, Openliberty 21.0.0.5 and Microprofile 4.0 inside a docker container.
I cannot set the mpConfig-2.0-introduced mp.config.profile from "outside" the image.
My setup is as follows:
microprofile-config.properties
microprofile-config-dev.properties
microprofile-config-prod.properties
inside src/main/resources/META-INF/
Features are correctly activated inside server.xml and are installed correctly on startup.
<featureManager onError="WARN">
<feature>microProfile-4.0</feature>
<feature>javaee-8.0</feature>
</featureManager>
I also have one server.env per stage that is passed to my container via docker run's --env-file.
My first approach was to set mp.config.profile inside the server.env since it can be
changed when running the image on different stages.
f.e. mp.config.profile=dev inside server-dev.env an so forth.
However the values of microprofile-config-dev.properties are never used with this setup.
The only way I was able to correctly activate the config profile was when using
<variable name="mp.config.profile" value="dev" />
inside the server.xml.
However the server.xml is not stage-specific inside the docker image, so it won't be possible to change it on different stages.
Does anyone have a suggestions what is the correct way to do this?
Thanks in advance
Regards
If you want to set
mp.config.profilefromserver.env, you probably need to setMP_CONFIG_PROFILEinstead.Since dots aren't valid in environment variable names, MP Config defines some mapping rules when looking up config from environment variables. It will check for the requested name with non-alphanumeric characters converted to underscores, and then again also with all letters converted to uppercase.