CMD에서 환경 변수 사용
Dockerfile의 CMD 스탠자에서 환경 변수를 사용할 수 있습니까?
다음과 같이하고 싶습니다.
CMD ["myserver", "--arg=$ARG", "--memcache=$MEMCACHE_11211_TCP_ADDR:$MEMCACHE_11211_TCP_PORT"]
$ MEMCACHE_11211_TCP_ *는 내 docker run
명령 의 --link 매개 변수를 포함하여 자동으로 설정됩니다 . 그리고 $ ARG는 런타임에 사용자가 "-e"매개 변수로 구성 할 수 있습니까?
이것은 나를 위해 작동하지 않는 것 같습니다. 예를 들어 문자 그대로 "$ ARG"문자열을 통과하는 것 같습니다.
이 답변은 조금 늦을 수 있습니다. 그러나 환경 CMD
은 인수를 작성하는 방법에 따라 약간 다르게 해석됩니다. 를 CMD
문자열 (배열 내부가 아닌)로 전달하면 exec 대신 쉘로 시작됩니다. https://docs.docker.com/engine/reference/builder/#cmd를 참조 하십시오 .
CMD
쉘로 실행하기 위해 배열 구문없이 시도 할 수 있습니다 .
CMD myserver --arg=$ARG --memcache=$MEMCACHE_11211_TCP_ADDR:$MEMCACHE_11211_TCP_PORT
CMD ["sh", "-c", "echo ${MY_HOME}"]
여기 sffits의 답변 .
앤디 둘 다 옳았다. json 구문은 진입 점을 우회합니다. 예제에서와 같이 CMD를 사용 /bin/sh -c
하면 환경 변수를 해석하는 기본 진입 점에 대한 인수로 간주됩니다 .
Docker는 두 경우 모두 CMD의 변수를 평가하지 않습니다. 전자에서는 명령이 직접 호출되어 아무것도 해석되지 않고 나중에 변수가 sh
.
나는이 방법으로 말할 수없는 가정 예를 들어, 일에,하지만 당신은 쉘 스크립트로이라고하면 생각 CMD runmyserver.sh
, 쉘 변수의 다음 해석은 CMD 실제로 실행까지 연기 될 것이다.
그래서 시도
myserver --arg=$ARG --memcache=$MEMCACHE_11211_TCP_ADDR:$MEMCACHE_11211_TCP_PORT``
쉘 스크립트로?
참고 URL : https://stackoverflow.com/questions/23071214/use-environment-variables-in-cmd
'Program Tip' 카테고리의 다른 글
모바일 장치에서 웹 사이트를 디버깅하는 방법은 무엇입니까? (0) | 2020.10.27 |
---|---|
Go에서 int와 int64의 차이점은 무엇입니까? (0) | 2020.10.27 |
DTR / DSR과 RTS / CTS 흐름 제어의 차이점은 무엇입니까? (0) | 2020.10.27 |
Python : Python 목록은 len ()에 대한 개수를 유지합니까, 아니면 각 호출에 대해 계산합니까? (0) | 2020.10.26 |
조인 업데이트를위한 MySQL 구문 (0) | 2020.10.26 |