Стратегии расположения файла конфигурации Apache Commons

Я новичок в Linux, Java и конфигурации Apache Commons, и у меня возникают проблемы с поиском файла свойств между средами.

Я создаю Spring API с Maven в Windows и имею файл .properties, из которого хочу извлечь настройки. Я также пытаюсь опубликовать этот API в контейнере Docker на базе Linux и не понимаю стратегии расположения файлов.

Все работает в Windows с файлом свойств в C:\users\myusers\app.properties. В контейнере Linux у меня есть и jar, и файл свойств здесь /usr/bin/myapp, но я не уверен, как использовать любую из стратегий для доступа к обоим, так как это не работает в Docker/Linux.

Есть ли наилучшая практика, где я должен хранить файл свойств в контейнере?

CombinedLocationStrategy strategy = new CombinedLocationStrategy(
    Arrays.asList(new HomeDirectoryLocationStrategy(), new FileSystemLocationStrategy()));

Parameters params = new Parameters();
FileBasedConfigurationBuilder<FileBasedConfiguration> builder = 
       new FileBasedConfigurationBuilder<FileBasedConfiguration>(PropertiesConfiguration.class)
                           .configure(params.fileBased()
                                   .setLocationStrategy(strategy)
                                   .setFileName("app.properties"));
Configuration propConfig = builder.getConfiguration();

rootDirectory = propConfig.getString("rootfolder");

person Cam Bruce    schedule 14.11.2019    source источник


Ответы (1)


Как и в Linux, мы также можем монтировать тома в докере. Это поможет иметь единый том для общих свойств или местоположений.

Во-первых, смонтируйте каталог из хост-системы как том в контейнер. См. документацию здесь

Если вы смонтируете его, скажем - /opt/myapp , то файлы будут видны для контейнера в /opt/myapp.

person aksappy    schedule 15.11.2019
comment
Я не хочу обмениваться файлами между Windows и Docker/Linux, я просто хочу развернуть файл JAR и .properties в Docker, и он сможет прочитать конфигурацию на основе приведенного выше кода. - person Cam Bruce; 15.11.2019