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

Antworten auf die Frage(16)

Ihre Antwort auf die Frage