2013-02-28 1 views
1

내 파이썬 앱에 사용할 사용자 지정 구성 var을 설정하려고합니다. 특히 현재 SHA는 정적 파일에서 URL 매개 변수로 사용하여 CDN이 각 배포시 다시 프라임되도록합니다. 나는 보통의 Heroku Python one (https://github.com/heroku/heroku-buildpack-python)을 기반으로하는 커스텀 빌드 팩으로이 작업을 수행하려고한다.커스텀 Heroku Python 빌드 팩에서 어떻게 config var를 설정할 수 있습니까?

지금 당장 나는 compile 스크립트를 수정하기 시작했습니다. GIT_DIR 다음

export GIT_SHA=$(git log -1 --format="%h")

나중에 해제되기 전에 지금까지 내가 라인 (175)의 주위에, 라인 (30)의 주위에, 내가 원하는 값을 얻을 수 있었지만 상단까지 실행 한 나는 곳을 생각 앱의 설정 값을 설정합니다.

set-env GIT_SHA '$GIT_SHA'

내가 필요한 단계라고 생각 heroku labs:enable user-env-compile를 실행했습니다

아무 소용하지만 내 인생 내가 얻는 방법을 알아낼 수 없습니다 : 난 내 자신을 추가하는 시도 buildpack 실제로 내 애플 리케이션을 사용하는 config var을 설정합니다.

편집 앤드류의 제안으로이를 해결할 수있었습니다. Heoku python 바인딩을 사용하여 빌드 팩에 설정된 환경 변수에서 var를 읽는 Python 스크립트를 호출하는 사용자 정의 buildpack을 작성했습니다.

답변

3

귀하의 질문에 대한 정확한 이해가 있다면, 당신은 env 변수를 컴파일 타임에 설정하고 싶지만 실행 중에 (정적 파일 URL이 앱에서 액세스 될 때마다) 읽는 것이 좋습니다. 정확하니?

컴파일은 응용 프로그램이 제공되는 것보다 완전히 다른 dyno에서 수행되므로 컴파일 시간 동안 set-env를 실행하면 컴파일 dyno의 환경이 변경 될 수 있지만 회전되는 프로덕션 dynos의 환경에는 영향을 미치지 않습니다 나중에.

여기서는 heroku labs:enable user-env-compile이 관련이 있다고 생각하지 않습니다. 컴파일 시간 동안 구성에서 읽을 수 있지만 쓰기를 허용하지 않기 때문입니다.

정말 env 변수를 사용하려는 경우 Heroku API's python bindings을 사용하여 앱 구성을 동적으로 수정할 수 있습니다. 임시 파일을 컴파일 된 출력 어딘가에 저장 한 다음 빌드 팩에서 dyno를 시작하는 파일에서 읽을 수도 있습니다. 또는 시작시 컴파일 dyno를 전혀 사용하지 않고 직접 생산 dyno에서 SHA를 가져 오는 것이 가능할 수도 있습니다.

그러나이 모든 것은 상당히 불규칙하며 CDN에서 정적 파일 버전 관리의 목표를 달성하기위한 더 깨끗한 방법이있을 수 있습니다.

+0

필자는 기본적으로 명령 행에서'heroku config : set'을 실행하는 것과 같은 결과를 얻고 싶습니다. –

+0

그러면 위의 대답에서 링크 된 Heroku API 파이썬 바인딩을 사용해야합니다. 그게 내가 아는 한, 앱 내부에서 설정에 영향을주는 유일한 방법입니다. 'heroku config : set'을 미리 사용하여 자신의 이름과 자신의 API 키를 알린 다음 동적으로 그 정보에 액세스하여 추가 설정 변수를 추가 할 수 있습니다. –

관련 문제