2017-10-09 3 views
0

Dockerfile에 이상한 동작이 있습니다. 나는 그것이 텍스트 환경에서 오는 파일을 작성 만들려고 varibales :Dockerfile 및 환경 변수

FROM ubuntu:14.04 

ENV KEY '' 
ENV VAL '' 

RUN echo "${KEY}:${VAL}" > /etc/test 

CMD [] 

나는이 이미지를 구축하고 다음과 같이 실행 :

docker run -it --rm -e KEY=aaa -e VAL=bbb mytest 

을 내가는/etc/테스트 파일을 표시하는 경우, 그것은이다 비어 있습니다 (존재하지만 비어 있음). 그것은 파일을 만들 때 환경 변수가 설정되지 않는 것 같습니다.

아이디어가 있으십니까?

는에게 그 시점에서 ENV 변수가 비어 있기 때문에 따라서이, 논리적 docker build ...

를 사용하여 이미지를 구축 때 고정 표시기 파일 RUN echo "${KEY}:${VAL}" > /etc/test의 명령이 실행 된 당신에게

답변

2

감사드립니다. 이미지를 시작할 때 실행할 명령을 commad로 옮겨야합니다.

0

docker 이미지를 작성할 때 KEY 및 VALUE를 인수로 정의하고 값을 설정할 수 있습니다.

FROM ubuntu:14.04 

ARG KEY 
ARG VAL 

RUN echo "${KEY}:${VAL}" > /etc/test 

CMD [] 

그럼 당신은 다음과 같이 사용하여 이미지를 구축 할 수 있습니다 :

docker build --build-arg KEY=<value> --build-arg VAL=<value> . 

https://docs.docker.com/engine/reference/builder/#using-arg-variables

+0

흠 ...이 당신이 키 값 쌍을 가지고 많은 이미지를 구축 할 필요가 있음을 의미한다. 왜 내 얼굴에 ... – Cabrinha

+0

단일 이미지를 빌드하고 런타임에 KEY 및 VAL 값을 변경하는 것을 선호하는 경우 스크립트를 작성하고이를 엔트리 포인트로 실행하고 값을 환경 변수로 도커에게 전달할 수 있습니다 컨테이너. –