Unterstützt application.yml Umgebungsvariablen?


109

Ich habe versucht, env-Variablen in meiner application.yml-Konfigration zu verwenden, wie:

spring:
  main:
    show_banner: false

---

spring:
  profiles: production
server:
  address: $OPENSHIFT_DIY_IP
  port: $OPENSHIFT_DIY_PORT

Die env-Variablen werden jedoch nicht aufgelöst. Muss ich eine andere Notation angeben?

In Rails können Sie zB <% = ENV ['FOOVAR']%> verwenden

Die einzige Alternative besteht darin, die App wie folgt auszuführen:

java -jar my.jar --server.address=$OPENSHIFT_DIY_IP --server.port=$OPENSHIFT_DIY_PORT

Antworten:


145

Versuchen Sie es ${OPENSHIFT_DIY_PORT}(die übliche Spring-Platzhalternotation). Sehen Sie hier für Dokumente.


Dies war genau das, was ich brauchte:app.name=MyApp app.description=${app.name} is a Spring Boot application
— Jurassix

2
Nur um darauf hinzuweisen - wenn Sie Kotlin verwenden, müssen Sie Ihre Referenz in Anführungszeichen setzen und dem $zBroot: "\${LOGGING_LEVEL_ROOT:info}"
— Edward

Leute, wie können wir den OPENSHIFT_DIY_PORT beim Starten der Anwendung über Unix Cli übergeben? Ich weiß, dass wir -D verwenden können, um Überschreibungsparameter zu übergeben, aber funktioniert das auch für env-Variablen? Beispiel: nohup java -Xmx1024m -jar -Dspring.profiles.active = "was auch immer". Gibt es eine Möglichkeit, dies mit env vars zu tun?
— Igor Donin

@IgorDonin, würde die Verkettung von Variablenzuweisungen und Programmaufrufen eine Option für Sie sein? Zum Beispiel:$MY_ENV=value && java -jar ...
— PAX

83

Sie können sogar einen Standardwert hinzufügen, wenn die Umgebungsvariable nicht angegeben ist:

logging:
  level:
    root: ${LOGGING_LEVEL_ROOT:info}

5
Ich habe diese Syntax in einer App gefunden, die ich geerbt habe, und konnte die Spring-Dokumente, die dies zeigen, nicht finden. Es ist ziemlich offensichtlich, was passiert, aber die Dokumente dafür zu finden, wäre schön. Vielen Dank für das Teilen - ich bin jetzt mit meiner Schlussfolgerung zuversichtlicher.
— Reverend

Ist die Verwendung von Standardwerten in der Konfiguration UB möglich oder wird dies ausdrücklich angegeben?
— Anddero
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.