2016-06-10 10 views
1

Also habe ich eine Anwendung mit JHipster generiert.Wie man OpenShift-Umgebungsvariablen verwendet, um eine MySQL-Datenbank zu konfigurieren

Lokal würde ich nur die Datenbank-Informationen in der Anwendung-dev.yml/application-prod.yml ändern und alles funktioniert gut.

Jetzt möchte ich meine Anwendung auf OpenShift bereitstellen. Ich habe versucht, die Namen der Umgebungsvariablen in der Anwendung-xxx.yml, aber es gab null zurück. Also habe ich die DatabaseConfiguration.java geändert, um das Lesen der Informationen aus der .yml-Datei zu überspringen und sie direkt aus den Umgebungsvariablen zu lesen.

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 
} 

statt

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 
} 

Nun ist die Frage: Wie richtig die Umwelt Openshift verwendet Variablen in meiner Konfiguration Klasse erfolgreich mit der Datenbank zu verbinden?

Bonus Frage: Was ist ein besserer Weg, um dies zu lösen, ich fühle mich nicht richtig, die Variablennamen in die DatabaseConfiguration Klasse zu setzen?

+0

Verwenden Sie $ {OPENSHIFT_MYSQL_DB_HOST} Syntax in application.yml ist die Art und Weise, es zu tun und es sollte funktionieren. Wie hast du es versucht? –

+0

Oh danke, ich musste meine Windows-Maschine neu starten, damit sie funktioniert. Ich habe meine Klassenmodifikationen rückgängig gemacht und den neuen KRIEG begangen. Ich werde in die Openshift-Logs schauen, um zu sehen, was die Fehler sind. Wenn Sie diesen Kommentar als Antwort posten, würde ich ihn gerne als den richtigen akzeptieren. Danke noch einmal – Nani

Antwort

1

Mit $ {OPENSHIFT_MYSQL_DB_HOST} -Syntax in application.yml ist die Art und Weise, es zu tun und es sollte funktionieren.