我有一个 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}]}
问题是
args
只能在构建时使用,而CMD
在运行时执行。我想现在实现您想要的唯一方法是在 Dockerfile 中使用 MASTER_NAME
值设置环境变量。
ARG MASTER_NAME
ENV MASTER_NAME ${MASTER_NAME}
CMD spark-submit --deploy-mode client --master ${MASTER_NAME}
这对我有用
#### 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