2016-07-08 2 views
1

docker 이미지에서 프로덕션 환경을 설정하려고합니다. 소프트웨어를 컴파일하는 데 몇 시간을 보낸 후 Dockerfile에서 로켈 환경 변수를 설정하는 것을 잊었습니다.Docker의 환경 변수

환경 변수를 이미지에 영구적으로 적용하는 방법이 있습니까? 나는이 작업을 수행하는 도커 파일 방식으로 만 왔으며이 작업을 다시 작성하여 이미 완료된 모든 작업을 잃고 싶지 않습니다.

도커 실행 명령이 해당 설정을 무시한 것으로 보이므로 .bashrc에 해당 변수를 설정하는 것이 효과가 없습니다.

+0

: 여기

난 그냥 (bash 쉘을) 무엇을하고 있었는지의 예입니다. 따라서 프로비저닝 자동화 작업을 시작하는 것이 좋습니다. –

+0

당신은 어떤 버전의 도커를 사용하고 있습니까? 어떤 OS 에서요? 'docker run' 옵션은 무엇을 사용하고 있습니까? – VonC

+0

@VonC 버전 1.11.2를 사용 중입니다. 지금은 컨테이너에 연결하고, 적절한 설치를하고, 수동으로 물건을 컴파일하고, 내 이미지에 변경 사항을 적용합니다. 나는 도커를 올바르게 사용하는 법을 배우고 있습니다 ... – KahPhi

답변

1

환경 변수를 이미지에 영구적으로 적용하는 방법이 있습니까?

이것은 directive ENV in Dockerfile입니다.

ENV <key> <value> 
ENV <key>=<value> ... 

그러나 당신이 (당신이 이미지 빌드의 대부분을 benefit from the cache을 dockerfile의 끝에 추가하고, 수 있지만) 이미지를 다시하고 싶지 않기 때문에, 당신은 여전히 ​​docker run -e "variable=value"

와 용기를 시작할 수 있습니다
+0

이미지를 영구적으로 추가하려면 유일한 방법은 dockerfile에서 {my_image}를 사용하고 여기에서 설명한 것과 같이 ENV를 설정하는 것입니다. 감사합니다 – KahPhi

+0

@KahPhi 사실, 당신은 기존 이미지에서 새로운 이미지를 만들 수 있습니다. – VonC

0

"도커 커밋"작업 중에 환경 변수를 변경하여 기존 이미지를 수정할 수 있습니다. https://docs.docker.com/engine/reference/commandline/commit/ 및이 StackOverflow Q & A : Docker Commit Created Images and ENTRYPOINT을 참조하고 대답을 sxc731로 참조하십시오. 그것은 나에게 Env 변수를 여러 개 설정하는 방법이 명확하지 않지만 각각에 대해 별도의 변경이 필요할 수 있습니다. 당신은 조만간 다시 할 것임을 주목

docker run -it --entrypoint /bin/bash $origimghash 
# make changes, leave running, then in another shell: 
EP='ENTRYPOINT ["python","/tmp/deploy/deploy.py"]' 
ENV='Env no_proxy "*.local, 169.254/16"' 
docker commit "--change=$ENV" "--change=$EP" $runninghash me/myimg 
docker inspect -f "{{ .Config.Env }}" $newhash