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?
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? –
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