Докеры ARG допускаются в рамках CMD-инсталляции

У меня есть Dockerfile, где ARG используется в инструкции CMD:

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

Арг передается через 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}]}

Ответ 1

Дело в том, что args можно использовать только во время сборки, а CMD выполняется во время выполнения. Я полагаю, что единственный подход для достижения того, что вы хотите, - это установить переменную окружения в файле Docker с значением MASTER_NAME.

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