web-dev-qa-db-fra.com

Docker ARG est-il autorisé dans les instructions CMD

J'ai un Dockerfile où un ARG est utilisé dans l'instruction CMD:

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

L'argument est passé via docker-compose:

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

Cependant, le ARG ne semble pas être développé pour CMD. Après je docker-compose up.

Voici ce qu'inspecte montre:

docker inspect  -f "{{.Name}} {{.Config.Cmd}}" $(docker ps -a -q)
/spark {[/bin/sh -c spark-submit --deploy-mode client --master ${MASTER_URL}]}
29
DarVar

Le fait est que args ne peut être utilisé qu'au moment de la construction, et que le CMD s'exécute au moment de l'exécution. Je suppose que la seule approche maintenant pour atteindre ce que vous voulez consiste à définir une variable d'environnement dans le Dockerfile avec le MASTER_NAME valeur.

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