2017-11-02 8 views
1

docker run 명령에 환경 변수를 전달했지만 결과 컨테이너가 전달 된 값 대신 기본값을 사용하는 문제가 있습니다. 내가 구축하고 실행할 때 발생하는docker run 명령으로 보낸 환경 변수를 수신하는 방법은 어떻게 확인합니까?

FROM alpine 
ENV MY_ENV="default value" 
ENTRYPOINT echo "MY_ENV: " $MY_ENV 

은 다음과 같습니다 : 여기

내 Dockerfile의

$ docker build -t temp . 
Sending build context to Docker daemon 54.78kB 
Step 1/3 : FROM alpine 
---> 37eec16f1872 
Step 2/3 : ENV MY_ENV "default value" 
---> Using cache 
---> 8ba6d797b765 
Step 3/3 : ENTRYPOINT echo "MY_ENV: " $MY_ENV 
---> Using cache 
---> 6fb9530b10b2 
Successfully built 6fb9530b10b2 
Successfully tagged temp:latest 

$ docker run temp -e MY_ENV=test 
MY_ENV: default value 

을 당신이 볼 수 있듯이, 출력은 "기본값"하지만 난 기대하지 말아야 "테스트"를 볼 수 있습니까?

컨테이너에 대해 docker inspect을 실행하면 입력을 받았음을 나타냅니다. 여기

docker inspect에서 구성 아래에 봉투와 Cmd를 값은 다음과 같습니다

"Env": [ 
    "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", 
    "MY_ENV=default value" 
], 
"Cmd": [ 
    "-e", 
    "MY_ENV=test" 
] 

나는 그것이 간단 확신합니다. 내가 뭘 놓치고 있니?

+0

비슷한 질문이 답변에서 원하는 결과를보다 인자로 치료 될 나타납니다 https://stackoverflow.com/ 질문/40334751/dockerfile-overriding-env-variable –

답변

2

실행 명령을 docker run -e MY_ENV=test temp으로 변경하십시오.

나는 로컬이 테스트 오히려 옵션 (그래서 무시)

+1

와우, facepalm! 내가 미쳤다고 생각 했어, 고마워! – James