将环境变量传递给在容器中计算的 docker 容器 CMD

将环境变量传递给在容器中计算的 docker 容器 CMD

我正在尝试运行一个 docker 容器,当我这样做时,docker run我需要向它传递一个在容器内定义的环境变量。

有问题的 docker 容器是 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 ...."

相关内容