2014-04-24 2 views
1

내 스칼라 Dropwizard는 SBT Start Script 플러그인 (작성 시점에 커밋 c1fefeb59f3d6ba053f99b8d49a52779ac3dbce8)을 사용하므로 포먼과 쉽게 실행할 수있는 실행 스크립트를 준비 할 수 있습니다.Heroku 환경 변수를 다른 동적 (Heroku-managed) 변수의 함수로 설정하십시오.

그러나 HOCON과 달리 Dropwizard의 구성 시스템에서는 스위치를 사용하여 JAVA_OPTS을 통해 YAML 파일의 변수를 무시할 수 있습니다.

포트를 설정하고 싶습니다.

여기에 내 문제가 있습니다. SBT 시작 스크립트의 최신 버전에서는 JAVA_OPTS이 시작 스크립트의 일부로 생성되므로 더 이상 Procfile을 통해 전달할 수 없습니다. 그래서, 유일한 방법은 내 응용 프로그램에 $PORT을 Heroku가 관리 얻을 내가 이걸 어떻게해야합니까 JAVA_OPTS

-Ddw.http.port=$PORT로를 통해 그것을 설정하는 것입니다?

내가 명령 줄에 heroku config:set 인수를 시도했다 :

  • JAVA_OPTS="-Ddw.http.port=$PORT" —이 $ PORT로 평가 내 환경, 대부분 ""에 있습니다.
  • JAVA_OPTS="-Ddw.http.port=\$PORT"heroku config이 경우 JAVA_OPTS="-Ddw.http.port=$PORT"으로 표시되지만 앱에 포트 번호로 $PORT이라는 문자가 주어집니다. 즉, Heroku에서 평가되지 않습니다.
  • JAVA_OPTS="-Ddw.http.port=\\\$PORT"heroku configJAVA_OPTS="-Ddw.http.port=\$PORT"로이 표시되지만 응용 프로그램은 문자 \$PORT
  • JAVA_OPTS="-Ddw.http.port=$$PORT"$$를 부여됩니다 Heroku가이 12345PORT 같은 것을 설정한다 (서브 쉘되지 않음), 그래서 현재 쉘의 PID입니다.

JAVA_OPTS을 통해 Heroku 관리 포트를 설정하는 방법을 알려주십시오.

답변

1

귀하의 질문에 답할 수는 없지만 (스칼라 또는 JAVA_OPTS 가지는 모르겠지만) .profile.d script을 사용하여 앱을 부팅 할 때 환경 변수를 동적으로 설정할 수 있습니다. 여기가 Heroku가 API를 사용하여 DATABASE_URL 환경 변수를 설정하는 예는 다음과 같습니다

# .profile.d file 
export DATABASE_URL=`curl -s -H "Authorization: Bearer $API_KEY" \ 
-X GET https://api.heroku.com/apps/$SOURCE_APP/config-vars \ 
-H "Accept: application/vnd.heroku+json; version=3" \ 
| grep "DATABASE_URL" | cut -d '"' -f 4 ` 

이 스크립트는 소스를 지정하는 응용 프로그램 환경 변수 API_KEY에 저장 유효한에게 Heroku의 API 키뿐만 아니라 SOURCE_APP 환경 변수에 의존 app (귀하의 경우 자체). 이 예에서는 DATABASE_URL을 확인하지만 원하는 것을 사용할 수 있습니다.

+0

정말 고맙습니다. 필자는 AWS에 너무 많이 익숙해졌으며 새로운 Heroku 기능을 완전히 놓쳤습니다.불행히도,''heroku config''는이 동적으로 설정된 변수를 보여주지 않습니다. – opyate

1

@catsby는 정확합니다.이 작업을 수행하려면 Heroku Platform API을 사용하는 것이 좋습니다.

SIDENOTE : Heroku의 플랫폼 API는 실제로 놀라운 것입니다. 당신은 dynos를 스케일링하고, 변수를 설정하고, 애드온 프로비저닝/프로비저닝 해제 등을 할 수 있습니다.

+0

+1이 API를 알려 주셔서 감사합니다. – opyate