Ich habe kurz ermittelt in welche Reihenfolge die einzelnen Konfigurationen bei enaio Microservices geladen werden:
Mein Beispiel Microservice:
- name: staffmanager
type: microservice
profiles: cloud,blue
instances: 1
memory: 512M
port: 12345
arch: x64
jdk: jdk17
path: ${appBase}/staffmanager/staffmanager-app.jar
Unser Microservice wird also mit den Profilen cloud
und blue
gestartet und heisst staffmanager
.
Daraus ergibt sich die folgende Ladereihenfolge:
Ladereihenfolge:
- Local: application.yml
- Server: application.yml
- Server: staffmanager.yml
- Local: application-blue.yml
- Local: application-cloud.yml
- Server: application-blue.yml
- Server: application-cloud.yml
- Server: staffmanager-blue.yml
- Server: staffmanager-cloud.yml
Mit Local:
bezeichne ich die Konfigurationen die üblicherweise in der JAR Datei mitgeliefert werden. Mit Server:
bezeichne ich die Konfigurationen die im Fall des Service-Maangers sich in dessen config Verzeichnis befinden. Die jeweilige Datei wird natürlich nur ausgelesen, sofern vorhanden.
Es werden also grundsätzlich erst einmal die Konfigurationen ohne Profil geladen. Danach werden die Konfigurationen mit Profil geladen. Wobei jeweils die Konfigurationen mit dem spezifischen App Namen höher priorisiert werden.
Des weiteren können Parameter noch per Environment Parameter und und vmArgs überschrieben werden. Diese übersteuern alle oben genannten Parameter. Hierbei wird zuerst die Environment und anschliessen die vmArgs geladen.
Im Fall des Service Managers werden zum Beispiel im Bereich globalEnvironment
vier Parameter übersteuert:
globalEnvironment:
SPRING_CLOUD_CONFIG_URI: http://127.0.0.1:${server.port}${spring.cloud.config.server.prefix}
SPRING_CLOUD_CONFIG_USERNAME: ${security.user.name}
SPRING_CLOUD_CONFIG_PASSWORD: ${security.user.password}
eureka.instance.preferIpAddress: true
Im Fall der Parameter SPRING_CLOUD_CONFIG_*
ist dies auch zwingend nötig, da ansonsten der Config Service nicht in allen Fällen gefunden werden könnte.
vmArgs sind normale Parameter die dem Start Befehl angehängt werden und immer mit -D
starten. Im Service Manager können diese über die Option options
gesetzt werden.
- name: staffmanager
type: microservice
profiles: cloud,blue
instances: 1
memory: 512M
port: 12345
arch: x64
jdk: jdk17
path: ${appBase}/staffmanager/staffmanager-app.jar
options:
- -Decmind.test=Blume
Ich hoffe diese Information ist hilfreich.