Application.yml supporta le variabili d'ambiente?


109

Ho provato a utilizzare le variabili env nella mia configurazione application.yml come:

spring:
  main:
    show_banner: false

---

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

ma le variabili env non vengono risolte. Devo fornire una notazione diversa?

In Rails puoi ad esempio usare <% = ENV ['FOOVAR']%>

L'unica alternativa è eseguire l'app in questo modo:

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

Risposte:


145

Prova ${OPENSHIFT_DIY_PORT}(la solita notazione segnaposto Spring). Vedi qui per i documenti.


Questo era esattamente ciò di cui avevo bisogno:app.name=MyApp app.description=${app.name} is a Spring Boot application
jurassix

2
Giusto per sottolineare - se si sta utilizzando Kotlin, è necessario mettere il vostro riferimento tra virgolette e sfuggire alla $peroot: "\${LOGGING_LEVEL_ROOT:info}"
Edward

Ragazzi, come possiamo fare per passare OPENSHIFT_DIY_PORT tramite cli unix all'avvio dell'applicazione? So che possiamo usare -D per passare i parametri di override, ma funziona anche per le variabili env? Es .: nohup java -Xmx1024m -jar -Dspring.profiles.active = "qualunque cosa". C'è un modo per farlo con env vars?
Igor Donin

@IgorDonin, la concatenazione di assegnazioni di variabili e programma richiederebbe un'opzione per te? Ad esempio:$MY_ENV=value && java -jar ...
PAX

84

Puoi anche aggiungere un valore predefinito, se la variabile d'ambiente non è fornita:

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

5
Ho trovato questa sintassi in un'app che ho ereditato e non sono riuscito a trovare i documenti di Spring che lo mostrano. È abbastanza ovvio cosa sta succedendo, ma sarebbe bello poter trovare i documenti per farlo. Grazie per la condivisione: ora sono più fiducioso della mia conclusione.
reverendo

Si utilizzano valori predefiniti nella configurazione UB o è esplicitamente indicato possibile?
anddero
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.