Variable env in application.properties von Spring Boot verwenden
Wir arbeiten an einemSpring Boot Web App und die Datenbank, die wir verwenden, ist MySql;
das Setup, das wir haben, ist, dass wir es zuerst testenörtlic (bedeutet, wir müssen MySql auf unserem PC installieren);
then wir schieben zuBit Bucke;
Jenkins erkennt automatisch den neuen Push an Bitbucket und erstellt einen Build darauf (damit Jenkins mvn-Build erfolgreich ist, müssen wir MySql auch auf den virtuellen Maschinen installieren, auf denen Jenkins ausgeführt wird).
ei Jenkins Build-Pässen geben wir den Code auf @ an unsere Anwendung weite OpenShift (Verwenden des Openshift-Bereitstellungs-Plugins für Jenkins).
Das Problem, das wir haben wie du vielleicht schon herausgefunden hast ist das:
imapplication.properties
Wir können die MySQL-Informationen nicht hart codieren. Da unser Projekt an 3 verschiedenen Orten laufen wird loka, Jenkins, und OpenShift) Wir müssen das Datenquellenfeld in @ dynamisch machapplication.properties
(Wir wissen, dass es verschiedene Möglichkeiten gibt, aber wir arbeiten derzeit an dieser Lösung.)
spring.datasource.url =
spring.datasource.username =
spring.datasource.password =
Die Lösung, die wir gefunden haben, ist, dass wir Systemumgebungsvariablen erstellen lokal und in der Jenkins-VM (benennt sie wie OpenShift) und weist ihnen jeweils die richtigen Werte zu:
export OPENSHIFT_MYSQL_DB_HOST="jdbc:mysql://localhost"
export OPENSHIFT_MYSQL_DB_PORT="3306"
export OPENSHIFT_MYSQL_DB_USERNAME="root"
export OPENSHIFT_MYSQL_DB_PASSWORD="123asd"
Wir haben das gemacht und es funktioniert. Wir haben auch mit @ überprüMap<String, String> env = System.getenv();
dass die Umgebungsvariablen als solche in Java-Variablen umgewandelt werden können:
String password = env.get("OPENSHIFT_MYSQL_DB_PASSWORD");
String userName = env.get("OPENSHIFT_MYSQL_DB_USERNAME");
String sqlURL = env.get("OPENSHIFT_MYSQL_DB_HOST");
String sqlPort = env.get("OPENSHIFT_MYSQL_DB_PORT");
Jetzt müssen wir nur noch diese Java-Variablen in unserem @ verwendapplication.properties
und damit haben wir Probleme.
In welchem Ordner und wie müssen wir das @ zuweispassword
, userName
, sqlURL
, undsqlPort
Variablen fürapplication.properties
um sie sehen zu können und wie fügen wir sie in @ eapplication.properties
?
Wir haben viele Dinge ausprobiert, darunter:
spring.datasource.url = ${sqlURL}:${sqlPort}/"nameofDB"
spring.datasource.username = ${userName}
spring.datasource.password = ${password}
Noch kein Glück. Wir haben diese Umgebungsvariablen wahrscheinlich nicht in der richtigen Klasse / im richtigen Ordner abgelegt oder verwenden sie in @ falscapplication.properties
.
Ihre Hilfe wird sehr geschätzt!
Vielen Dank