2016-04-19 9 views
4

Ich versuche, unsere stabilen App-Server zu migrieren, um ihre Konfiguration von einem Spring Cloud Config-Server zu erhalten. Jede App hat eine {my-app}.yml Datei auf dem Konfig-Server und wir können Profile (entweder in Dateien mit den Namen {my-app}-{profile}.yml oder mit YAML-Multiprofil-Dokumenten) verwenden, um unterschiedliche Konfigurationen pro Umgebung für jede App zu haben, und sogar ein Profil in ein anderes mit spring.profiles.include eine Art von Erbschaft anbieten - so weit, so gut. Die Profile können jedoch nur aus der gleichen App ineinander eingefügt werden, und wir haben mehrere Anwendungen, die vom gleichen Konfig-Server konfiguriert sind und viele gemeinsame Konfigurationen pro Umgebung haben - zum Beispiel verwenden sie fast alle dieselbe DataSource-Konfiguration Verbindung mit der gleichen Datenbank und ebenso für Messaging, Cache und so weiter. Das ist viel doppelte Konfiguration und viele Stellen, die geändert werden müssen - genau das, was Spring Cloud Config vermeiden soll!Nehmen Sie die gemeinsame Konfiguration für mehrere Apps im Spring Cloud Config-Server auf.

Gibt es eine Möglichkeit, über Config-Eigenschaften über Anwendungen im Spring Cloud Config Server "einzubinden" (über Profile oder anderweitig!)?

aktualisieren

Neben der richtigen Antwort von @vladsfl unten, Vorsicht, wenn Sie das native Profil auf der Config-Server verwenden Config aus dem Dateisystem oder Classpath zu dienen anstelle eines git Repo, die Der config-Server verwendet application.yml und seine Profilvarianten für sich selbst, lehnt es jedoch ab, sie für andere Apps bereitzustellen. Die Lösung besteht darin, spring.cloud.config.server.native.searchLocations zu verwenden, um die served config von einem anderen Speicherort abzurufen.

Antwort

6

Ja. Sie können application.yml oder application-<profile>.yml auf Ihrem Config-Server haben und jetzt wird jede Anwendung, die diesen Konfigurationsserver verwendet, alle Einstellungen in application.yml erben. Jede Anwendung, die in einem bestimmten Profil ausgeführt wird, erbt Einstellungen von application-<profile>.yml.

+0

'Anwendung-.yml 'scheint ein seltsamer Weg, um es anzuzeigen, würde ich' Anwendung sagen- .yml'. Funktioniert auch mit Eigenschaften. – spencergibb

+1

Danke - der Grund, dass dies für mich nicht funktionierte, ist, weil ich das "native" Profil auf dem Config-Server verwendet habe und vom Klassenpfad anstatt von einem Git-Repository geladen habe, was explizit die Anwendung - *. {Yml | properties} ausschließt die bediente Konfiguration! Ihre Antwort half mir dabei, das herauszufinden. – Zirzirikos

+0

@spencergibb. Ich tippte dort, aber ich denke, es wurde – vladsfl

Verwandte Themen