在docker入口点中传递参数
我正在Azure应用程序服务上运行我的应用程序,因此我无权访问在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
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有一些棘手的交互)