2016-06-10 46 views
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類中是不對的?

+0

在application.yml中使用$ {OPENSHIFT_MYSQL_DB_HOST}語法是實現它的方法,它應該可以工作。你是怎麼試試的? –

+0

哦謝謝,顯然我必須重新啓動我的Windows機器才能正常工作。我回滾了我的類修改並提交了新的WAR。我將查看openshift日誌以查看錯誤是什麼。如果你發表這個評論作爲答案,我會高興地接受它作爲正確的。再次感謝 – Nani

回答

1

在application.yml中使用$ {OPENSHIFT_MYSQL_DB_HOST}語法是實現它的方法,它應該可以工作。

相關問題