2016-06-10 139 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}语法是实现它的方法,它应该可以工作。