application.ymlは環境変数をサポートしていますか?


109

私はapplication.yml設定で環境変数を使用してみました:

spring:
  main:
    show_banner: false

---

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

しかし、env変数は解決されません。別の表記を指定する必要がありますか?

Railsでは、たとえば<%= ENV ['FOOVAR']%>を使用できます。

唯一の選択肢は、次のようにアプリを実行することです:

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

回答:


145

${OPENSHIFT_DIY_PORT}(通常のSpringプレースホルダー表記)を試してください。ドキュメントについては、こちらをご覧ください。


これはまさに私が必要としていたものでしたapp.name=MyApp app.description=${app.name} is a Spring Boot application
。– jurassix

2
あなたがkotlinを使用している場合、あなたが引用符であなたの参照を置く&エスケープする必要がある-ちょうど指摘する$などroot: "\${LOGGING_LEVEL_ROOT:info}"
エドワード・

皆さん、アプリケーションの起動時にOPENSHIFT_DIY_PORTをunix cliに渡すにはどうすればよいですか?-Dを使用してオーバーライドパラメータを渡すことができることはわかっていますが、それは環境変数でも機能しますか?例:nohup java -Xmx1024m -jar -Dspring.profiles.active = "whatever"。環境変数でそれを行う方法はありますか?
Igor Donin

@IgorDonin、変数の割り当てとプログラムの連結によりオプションが呼び出されますか?例:$MY_ENV=value && java -jar ...
PAX

83

環境変数が提供されていない場合は、デフォルト値を追加することもできます。

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

5
継承したアプリでこの構文を見つけましたが、これを示すSpringドキュメントを見つけることができませんでした。何が起こっているのかはかなり明白ですが、ドキュメントを見つけられるようにしておくと便利です。共有してくれてありがとう-私は今私の結論にもっと自信があります。
2018年

設定UBでデフォルト値を使用していますか、それとも明示的に可能ですか?
anddero
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.