Итак, я создал приложение с JHipster.Как использовать переменные среды OpenShift для настройки базы данных MySQL
Локально, я бы просто изменил информацию о базе данных в application-dev.yml/application-prod.yml, и все работает нормально.
Теперь я хочу развернуть свое приложение на OpenShift. Я попытался поместить имена переменных среды в application-xxx.yml, но он вернул null. Поэтому я изменил DatabaseConfiguration.java
, чтобы пропустить чтение информации из файла .yml и прочитать их непосредственно из переменных среды.
if(System.getenv("OPENSHIFT_MYSQL_DB_HOST") != null && System.getenv("OPENSHIFT_MYSQL_DB_PORT") != null){
config.addDataSourceProperty("url", "jdbc:mysql://"+System.getenv("OPENSHIFT_MYSQL_DB_HOST")+":"+System.getenv("OPENSHIFT_MYSQL_DB_PORT")+"/zetravelcloud?useUnicode=true&characterEncoding=utf8");
}
if (System.getenv("OPENSHIFT_MYSQL_DB_USERNAME") != null) {
config.addDataSourceProperty("user", System.getenv("OPENSHIFT_MYSQL_DB_USERNAME"));
} else {
config.addDataSourceProperty("user", ""); // HikariCP doesn't allow null user
}
System.out.println(System.getenv("OPENSHIFT_MYSQL_DB_PASSWORD"));
if (System.getenv("OPENSHIFT_MYSQL_DB_PASSWORD") != null) {
config.addDataSourceProperty("password", System.getenv("OPENSHIFT_MYSQL_DB_PASSWORD"));
} else {
config.addDataSourceProperty("password", ""); // HikariCP doesn't allow null password
}
вместо
config.addDataSourceProperty("url", dataSourceProperties.getUrl());
if (dataSourceProperties.getUsername() != null) {
config.addDataSourceProperty("user", dataSourceProperties.getUsername());
} else {
config.addDataSourceProperty("user", ""); // HikariCP doesn't allow null user
}
if (dataSourceProperties.getPassword() != null) {
config.addDataSourceProperty("password", dataSourceProperties.getPassword());
} else {
config.addDataSourceProperty("password", ""); // HikariCP doesn't allow null password
}
Теперь вопрос: Как правильно использовать переменные окружения OpenShift в моем классе конфигурации, чтобы успешно подключиться к базе данных?
Вопрос о бонусе: что является лучшим способом решить эту проблему, я не считаю правильным вносить имена переменных в класс DatabaseConfiguration
?
Использование синтаксиса $ {OPENSHIFT_MYSQL_DB_HOST} в application.yml - способ сделать это, и он должен работать. Как вы пытались? –
О, спасибо, видимо, мне пришлось перезапустить мою машину для Windows, чтобы она работала. Я отбросил свои модификации класса и совершил новую WAR. Я посмотрю в журналы открывания, чтобы увидеть, что такое ошибки. Если вы опубликуете этот комментарий в качестве ответа, я бы с радостью принял его как правильный. еще раз спасибо – Nani