Я работаю в системе, используя Apache Commons Config для установки свойств конфигурации.Мы устанавливаем эти свойства с помощью файла конфигурации, системных свойств и переменных среды.
<configuration>
<header>
<result forceReloadCheck="true"/>
</header>
<override>
<system/>
<env/>
<properties fileName="local.cfg" throwExceptionOnMissing="false" config-name="local" config-optional="true" encoding="UTF-8">
<reloadingStrategy refreshDelay="5000" config-class="org.apache.commons.configuration.reloading.FileChangedReloadingStrategy"/>
</properties>
<properties fileName="dspace.cfg" throwExceptionOnMissing="true" encoding="UTF-8">
<reloadingStrategy refreshDelay="5000"
config-class="org.apache.commons.configuration.reloading.FileChangedReloadingStrategy"/>
</properties>
</override>
</configuration>
Большинство имен свойств конфигурации содержат точки.Трудно установить свойство, содержащее точку, через переменную среды, потому что точки не всегда поддерживаются в именах переменных environemtn.См. Передача переменной «aaa.bbb» в процесс контейнера Docker для описания проблемы.
При запуске этой системы в Docker было бы очень полезно переопределить свойства конфигурации через средупеременные, переданные в docker-compose.
Можно ли перевести имя переменной среды, переданное в Apache Config.Например, можно ли установить переменную среды без точек и преобразовать ее в свойство конфигурации, содержащее точки?
вызов docker-compose
environment:
- ABC_DEF_GHI=XYZ
Рассматривать эту переменную как свойство
ABC.DEF.GHI=XYZ