Spring boot auf Tomcat mit externen Konfiguration
Ich kann nicht finden, eine Antwort auf diese Frage auf stackoverflow daher im Fragen hier, so konnte ich einige Ideen bekommen.
Ich habe eine Spring-Boot-Anwendung, die ich verwendet haben, als ein Krieg-Paket auf Tomcat 8. Ich folgte dieser Anleitung Erstellen Sie eine implementierbare war-Datei, die scheint zu funktionieren nur fine.
Jedoch das Problem, das ich bin derzeit mit ist in der Lage zu externalisieren, die Konfiguration, also ich kann die Konfiguration als puppet-templates.
In das Projekt, was ich habe, ist,
src/main/resources
-- config/application.yml
-- config/application.dev.yml
-- config/application.prod.yml
-- logback-spring.yml
Also wie kann ich eventuell Last config/application.dev.yml
und config/application.prod.yml
extern und noch immer config/application.yml
? (enthält default-Eigenschaften, einschließlich spring.application.name
)
Ich habe gelesen, dass man die Konfiguration laden, in dieser Reihenfolge,
- Eine /config-Unterverzeichnis des aktuellen Verzeichnisses.
- Das aktuelle Verzeichnis
- Ein classpath /config Paket
- Die classpath-root
Daher habe ich versucht, laden Sie die Konfigurations-Dateien von /opt/apache-tomcat/lib
ohne Erfolg.
Was gearbeitet, so weit
Laden über export CATALINA_OPTS="-Dspring.config.location=/opt/apache-tomcat/lib/application.dev.yml"
jedoch was ich gerne wissen würde ist,
- Finden Sie heraus, warum das laden über
/opt/apache-tomcat/lib
classpath funktioniert nicht. - Und gibt es eine bessere Methode, dies zu erreichen ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie richtig über die Ladereihenfolge. Nach Spring-boot-Dokumentation
Dies bedeutet, dass, wenn Sie Ihre
application.yml
Datei zu/opt/apache-tomcat/lib
oder/opt/apache-tomcat/lib/config
es geladen wird.Jedoch, wenn Sie
application.dev.yml
zu, dass die Weg sind, wird es nicht geladen werden, daapplication.dev.yml
ist nicht mit dem Namen Frühling sucht. Wenn Sie möchten, dass der Frühling zu Lesen, dass auch die Datei, die Sie brauchen zu geben, die es als option--spring.config.name=application.dev
oder-Dspring.config.name=application.dev
.Aber ich weiß nicht empfehlen diese Methode.
Ja. Verwenden Frühling Profil-spezifische Eigenschaften. Sie können benennen Sie Ihre Dateien von
application.dev.yml
zuapplication-dev.yml
, und geben-Dspring.profiles.active=dev
option. Der Frühling Lesenapplication-dev.yml
undapplication.yml
Dateien und Profil-spezifische Konfiguration überschreiben default-Konfiguration.Ich würde vorschlagen, hinzufügen von
-Dspring.profiles.active=dev
(oderprod
) zuCATALINA_OPTS
auf jeder entsprechenden server/tomcat-Instanz implementiert werden.