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

我有一个 Dockerfile 文件,其中 CMD指令中使用了 ARG:

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 inspect  -f "{{.Name}} {{.Config.Cmd}}" $(docker ps -a -q)
/spark {[/bin/sh -c spark-submit --deploy-mode client --master ${MASTER_URL}]}
32324 次浏览

问题是 args只能在构建时使用,而 CMD是在运行时执行的。我想现在唯一能达到你想要的效果的方法就是在 Dockerfile 中设置一个带有 MASTER_NAME值的环境变量。

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