一尘不染

CMD指令中是否允许Docker ARG

docker

我有一个Dockerfile,其中ARGCMD指令中使用了:

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}]}

阅读 458

收藏
2020-06-17

共1个答案

一尘不染

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

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