1
因此,我使用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
類中是不對的?
在application.yml中使用$ {OPENSHIFT_MYSQL_DB_HOST}語法是實現它的方法,它應該可以工作。你是怎麼試試的? –
哦謝謝,顯然我必須重新啓動我的Windows機器才能正常工作。我回滾了我的類修改並提交了新的WAR。我將查看openshift日誌以查看錯誤是什麼。如果你發表這個評論作爲答案,我會高興地接受它作爲正確的。再次感謝 – Nani