Как установить профили по умолчанию в Thorntail 2.4 - PullRequest
0 голосов
/ 29 марта 2019

Проблема:

Я создал приложение на JavaEE с Thorntail 2.4.0-Final.У меня есть 2 файла yaml, 'project-default.yml' и 'project-local.yml'.Мои данные Postgres находятся внутри default.yml, а моя информация H2 - в local.yml.Если я запускаю свое приложение из командной строки 'java -jar myapplication.jar', он будет использовать default.yml.Если я добавлю -Slocal в командную строку, он использует local.yml, но я хочу, чтобы он по умолчанию использовал local.yml.Я знаю, что могу переименовать файлы 2 yaml, так что по умолчанию будет H2, но это не решит мою проблему, потому что я хочу развернуть свое приложение в облаке, а в облаке он должен использовать Postgres, а не H2 инет никакой возможности сказать что-то вроде 'cf push myapplication -S ....'.

Вопрос:

Как я могу сказать моему приложению, что он используетФайл 'project-local.yml', когда я запускаю свое приложение локально, без добавления '-Slocal'?

или

Как я могу отправить свое приложение, добавив команду, чтобы сказать, что файл yamlон должен использовать?.

1 Ответ

0 голосов
/ 29 марта 2019

Thorntail не может знать, в какой среде он работает.Само назначение профилей конфигурации заключается в том, что вы контролируют, какая конфигурация применяется.Если у вас есть представление о том, как можно надежно (!) Обнаружить «локальную» среду, я думаю, что это было бы отличным запросом на функцию.

Тем не менее, кажется странным, что Cloud Foundry не позволит вам настроитькоманда, используемая для запуска приложения.Для http://cli.cloudfoundry.org/en-US/cf/push.html, вы можете использовать аргумент -c для настройки команды.

Это кажется довольно низким уровнем, так что вот еще один вариант.В дополнение к аргументам -s и -S вы можете использовать системные свойства thorntail.project.stage.file и thorntail.project.stage.Здесь вы можете установить thorntail.project.stage, что примерно эквивалентно -S.В соответствии с https://github.com/cloudfoundry/java-buildpack/blob/master/docs/framework-java_opts.md, вы можете установить произвольные системные свойства, создав переменную окружения JAVA_OPTS.

То есть, если вы переключили project-defaults.yml на локальные настройки (используя H2) и создали, например, project-cloud.ymlс производственными настройками (с использованием PostgreSQL) было бы достаточно создать переменную среды JAVA_OPTS="-Dthorntail.project.stage=cloud" в Cloud Foundry.

...