application.yml은 환경 변수를 지원합니까?


110

내 application.yml 구성에서 env 변수를 다음과 같이 사용해 보았습니다.

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

답변:


146

시도하십시오 ${OPENSHIFT_DIY_PORT}(일반적인 Spring 자리 표시 자 표기법). 문서는 여기 를 참조 하십시오 .


이것이 바로 내가 필요로하는 것입니다.app.name=MyApp app.description=${app.name} is a Spring Boot application
jurassix

2
그냥 지적합니다 - 당신이 코 틀린를 사용하는 경우, 당신이 따옴표에 대한 참조를 넣어 및 누출되어 필요 $root: "\${LOGGING_LEVEL_ROOT:info}"
에드워드

여러분, 응용 프로그램을 시작할 때 어떻게 OPENSHIFT_DIY_PORT를 unix cli를 통해 전달할 수 있습니까? -D를 사용하여 재정의 매개 변수를 전달할 수 있다는 것을 알고 있지만 env 변수에서도 작동합니까? 예 : nohup java -Xmx1024m -jar -Dspring.profiles.active = "whatever". env vars로 수행하는 방법이 있습니까?
Igor Donin

@IgorDonin, 변수 할당과 프로그램을 연결하면 옵션이 호출됩니까? 예 :$MY_ENV=value && java -jar ...
PAX

84

환경 변수가 제공되지 않은 경우 기본값을 추가 할 수도 있습니다.

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

5
상속받은 앱에서이 구문을 찾았지만이를 보여주는 Spring 문서를 찾을 수 없습니다. 무슨 일이 일어나고 있는지 분명하지만 문서를 찾을 수 있다면 좋을 것입니다. 공유 해주셔서 감사합니다. 이제 결론에 대해 더 확신합니다.
목사

구성 UB에서 기본값을 사용하고 있습니까 아니면 명시 적으로 가능하다고 명시되어 있습니까?
anddero
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.