Apache Config - установить имена свойств, содержащие точку, через переменные среды - PullRequest
0 голосов
/ 12 марта 2019

Я работаю в системе, используя 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
...