Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在docker入口点中传递参数_Docker - Fatal编程技术网

在docker入口点中传递参数

在docker入口点中传递参数,docker,Docker,我正在Azure应用程序服务上运行我的应用程序,因此我无权访问docker run命令。现在,我想将一些变量传递到ENTRYPOINT,我正试图在构建时本身使用ARGs。这是它的样子 docker build -t $IMAGE_NAME --build-arg env=dev --build-arg amplify_key=xxxxxxxxxxxxxx . 在我的Dockerfile中 ARG env ARG amplify_key ENTRYPOINT ["/bin/bash", "-c

我正在Azure应用程序服务上运行我的应用程序,因此我无权访问
docker run
命令。现在,我想将一些变量传递到ENTRYPOINT,我正试图在构建时本身使用ARGs。这是它的样子

docker build -t $IMAGE_NAME --build-arg env=dev --build-arg amplify_key=xxxxxxxxxxxxxx .
在我的Dockerfile中

ARG env
ARG amplify_key

ENTRYPOINT ["/bin/bash", "-c", "init.sh $env $amplify_key"]

但这似乎不起作用。请告诉我这个问题。

$variable
引用可以在Dockerfile中展开,也可以在命令运行时由shell展开。只有一些Dockerfile命令;对于RUN、CMD和ENTRYPOINT,它仅由shell完成。当shell进行扩展时,它不知道特定于Docker的参数,只知道环境变量,因此需要将参数复制到ENV。有一个

ARG环境
ARG放大键
ENV ENV=$ENV放大键=$amplify\u键
CMD init.sh$env$amplify_键
假设
init.sh
是您自己的脚本,但是,一旦在环境变量中有了这些值,您就可以直接访问它们,而无需通过位置参数传递它们

#/垃圾箱/垃圾箱
echo“在$env环境中运行”
curl-H“授权:持有人$amplify_密钥”。。。
ARG环境
ARG放大键
ENV ENV=$ENV放大键=$amplify\u键
CMD[“init.sh”]
这使您可以更轻松地在启动时覆盖变量值,如果需要手动向命令提供参数,则强制选项集要小得多。如果您使用ENTRYPOINT模式进行一些首次设置,然后运行
exec“$@”
来运行CMD,这也会更好(ENTRYPOINT和
sh-c有一些棘手的交互)