如何使用OpenShift环境变量来配置MySQL数据库

时间:2016-06-10 01:23:36

标签: java spring-boot openshift jhipster

所以我用JHipster生成了一个应用程序。

在本地,我只想修改application-dev.yml / application-prod.yml中的数据库信息,一切正常。

现在我想在OpenShift上部署我的应用程序。我尝试将环境变量名称放在application-xxx.yml中,但它返回null。所以我修改了segmentControl.selectedSegmentIndex以跳过从.yml文件中读取信息并直接从环境变量中读取它们。

DatabaseConfiguration.java

而不是

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
}

现在的问题是:如何正确使用配置类中的OpenShift环境变量来成功连接到数据库?

奖金问题:解决此问题的更好方法是什么,我觉得将变量名称放在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 } 类中是对的?

1 个答案:

答案 0 :(得分:1)

在application.yml中使用$ {OPENSHIFT_MYSQL_DB_HOST}语法是这样做的方法,它应该可以工作。