2016-10-30 4 views
7

Dockerfile이 있으며 기본값으로 API를 구성 할 수 있도록하고 싶습니다. socialengine/nginx를-스파 FROMDockerfile ENV 변수 덮어 쓰기

ENV의 API_URL 로컬 호스트 : 그래서 6007

내가 로컬 호스트를 오버라이드 (override) 할 수있을 거라고이 이미지를 실행하면 6007을 아래처럼 뭔가 :

고정 표시기 실행 -e API_URL = production.com : 6007 UI

이것은 작동하지 않으며이를 수행하는 방법에 대한 명확한 설명을 찾을 수 없습니다.

어떤 조언이 필요합니까?

답변

13

당신이 설명한 것은 잘 작동합니다. 을 감안할 때 :

$ cat Dockerfile 
FROM socialengine/nginx-spa 
ENV API_URL localhost:6007 
$ docker build -t ui . 
[...] 

이를 고려

$ docker run -it --rm ui env | grep API_URL 
API_URL=localhost:6007 

비교 :

$ docker run -it --rm -e API_URL='production:6007' ui env | grep API_URL 
API_URL=production:6007 

당신의 Dockerfile에 설정된 기본값을 대체 할 docker run 명령 행에 -e VARNAME=varvalue 전달.

다른 동작이 나타나는 경우 질문을 업데이트하여 실행중인 명령과 관련 출력을 정확하게 표시하십시오.

업데이트 여기

은 보는 즐거움 기록, 전체 예입니다 응답에 대한

https://asciinema.org/a/a5a2n3exlyh4jkii4k0ivvqmd

+0

감사합니다. 그러나 나는 그것이 당신이 나에게 준 올바른 도커 명령이라고 생각하지 않습니다. 그것은 이미지 ENV를 만들려고합니다. – Proximo

+0

어, 그게 뭐야? 그것들은 완벽하게 유효한 도커 명령입니다. 두 예제의 이미지 이름은 모두 'ui'입니다. 그리고 그것들은'docker run' 명령이기 때문에 아무것도 만들지 않을 것입니다. 잘못 입력하면 이미지를 가져올 수도 있습니다. – larsks

+1

흥미 롭군요, 작동하지 않았지만 당신의 대답이 내 문제를 파악하는 데 도움이되었습니다. CMD로 사용해야 할 때 RUN 섹션에서 ENV 변수를 사용하여 시도했습니다. 애매한 질문에 사과드립니다. asciinema.org +1. – Proximo