Docker 컨테이너를 실행하려고 하는데 이 작업을 수행할 때 docker run
컨테이너 내에 정의된 환경 변수를 전달해야 합니다.
문제의 도커 컨테이너는 consul(https://github.com/hashicorp/docker-consul/blob/9fb940c32b6f46b0a77a640d7161054e00e97bbb/0.X/Dockerfile) 진입점으로 사용자 정의 스크립트가 있습니다. 따라서 sh -c '...$VARIABLE'
이러한 모든 항목이 진입점에 매개변수로 전달되고 분명히 실패하므로 고전적인 접근 방식은 작동하지 않습니다. 다음과 같이 직접 작성해 보세요.
docker run consul [...] $VARIABLE
또한 $VARIABLE은 컨테이너가 아닌 호스트에서 평가되기 때문에 작동하지 않습니다.
답변1
그동안 나는 내 자신의 문제를 해결했습니다. 대답은 간단합니다. 왜냐하면 나는 다음과 같은 것을 알고 있기 때문입니다:
docker exec -it container sh -c "echo $VARIABLE"
완벽하게 작동합니다. sh -c를 사용하여 전체 진입점을 실행하고 필요한 매개변수를 전달할 수 있습니다. 따라서 사용자 지정 진입점이 있고 컨테이너 자체에 정의된 변수를 전달하려면 다음을 수행하세요.
docker run yourimage sh -c "/path/to/entrypoint.sh param1 param2 ... $SOMEVAR ...."