Использование переменной env в application.properties Spring Boot

Мы работаем надВесенний ботинок веб-приложение и база данных, которую мы используемMySql;

установка у нас есть, мы сначала проверим этов местном масштабе (означает, что нам нужно установить MySql на наш компьютер);

тогда мы подталкиваем кBitbucket;

Дженкинс автоматически обнаруживает новый push-запрос в Bitbucket и выполняет сборку на нем (для прохождения сборки Jenkins mvn нам также необходимо установить MySql на виртуальных машинах, на которых работает Jenkins).

если Jenkins выполняет сборку, мы помещаем код в наше приложение наOpenShift (используя плагин развертывания Openshift на Jenkins).

Проблема у нас есть как вы уже поняли, это то, что:

вapplication.properties мы не можем жестко закодировать информацию MySql. Так как наш проект будет работать в 3 разных местах (местный, Дженкинс, а такжеOpenShift) нам нужно сделать поле источника данных динамическим вapplication.properties (мы знаем, что есть разные способы сделать это, но мы сейчас работаем над этим решением).

spring.datasource.url = 
spring.datasource.username = 
spring.datasource.password = 

Решение, которое мы придумали, это мысоздать системные переменные среды локально и в Jenkins vm (называя их так же, как их называет OpenShift) и присваивая им правильные значения соответственно:

export OPENSHIFT_MYSQL_DB_HOST="jdbc:mysql://localhost"
export OPENSHIFT_MYSQL_DB_PORT="3306"
export OPENSHIFT_MYSQL_DB_USERNAME="root"
export OPENSHIFT_MYSQL_DB_PASSWORD="123asd"

Мы сделали это, и это работает. Мы также проверили сMap<String, String> env = System.getenv(); что переменные окружения могут быть преобразованы в переменные Java как таковые:

String password = env.get("OPENSHIFT_MYSQL_DB_PASSWORD");   
String userName = env.get("OPENSHIFT_MYSQL_DB_USERNAME");   
String sqlURL = env.get("OPENSHIFT_MYSQL_DB_HOST"); 
String sqlPort = env.get("OPENSHIFT_MYSQL_DB_PORT");

Теперь остается только использовать эти переменные Java в нашемapplication.properties и это то, с чем у нас проблемы.

В какой папке и как мы должны назначитьpassword, userName, sqlURL, а такжеsqlPort переменные дляapplication.properties чтобы увидеть их и как мы включаем их вapplication.properties?

Мы перепробовали много вещей, одна из которых:

spring.datasource.url = ${sqlURL}:${sqlPort}/"nameofDB"
spring.datasource.username = ${userName}
spring.datasource.password = ${password}

Пока не повезло. Возможно, мы не помещаем эти переменные env в нужный класс / папку или используем их неправильно вapplication.properties.

Ваша помощь высоко ценится!

Спасибо!

Ответы на вопрос(8)

Ваш ответ на вопрос