CMD指令中是否允许使用Docker ARG

问题描述 投票:0回答:2

我有一个 Dockerfile,其中

ARG
CMD
指令中使用:

ARG MASTER_NAME
CMD spark-submit --deploy-mode client --master ${MASTER_URL}

arg 通过 docker-compose 传递:

  spark:
    build:
      context: spark
      args:
        - MASTER_URL=spark://master:7077

但是,

ARG
似乎并未针对
CMD
进行扩展。之后我
docker-compose up
.

以下是检查显示的内容:

docker inspect  -f "{{.Name}} {{.Config.Cmd}}" $(docker ps -a -q)
/spark {[/bin/sh -c spark-submit --deploy-mode client --master ${MASTER_URL}]}
docker docker-compose
2个回答
178
投票

问题是

args
只能在构建时使用,而
CMD
在运行时执行。我想现在实现您想要的唯一方法是在 Dockerfile 中使用
MASTER_NAME
值设置环境变量。

ARG MASTER_NAME
ENV MASTER_NAME ${MASTER_NAME}
CMD spark-submit --deploy-mode client --master ${MASTER_NAME}

0
投票

这对我有用

#### dockerfile

ARG FUNC_NAME_DEPLOY
#deployment
ENV DEPLOY_COMMAND="sh custom-scripts/deploy.sh ${FUNC_NAME_DEPLOY}"
CMD $DEPLOY_COMMAND
#### custom-scripts/deploy.sh

if [ -z "$1" ]; then
  sls deploy --aws-profile custom-profile-dev --stage test 
else
  sls deploy function --function $1 --aws-profile custom-profile-dev --stage test 
fi

© www.soinside.com 2019 - 2024. All rights reserved.