web-dev-qa-db-fra.com

Docker CMD exec-form pour l'exécution de commandes multiples

Voici un exemple stupide d’exécution de plusieurs commandes via l’instruction CMD dans Shell-form. Je préférerais utiliser le exec-form, mais je ne sais pas comment concaténer les instructions.

Forme de coquille:

CMD mkdir -p ~/my/new/directory/ \
 && cd ~/my/new/directory \
 && touch new.file

exec-form:

CMD ["mkdir","-p","~/my/new/directory/"]
# What goes here?

Quelqu'un peut-il fournir la syntaxe équivalente dans exec-form?

13
Zak

La réponse courte est que vous ne pouvez pas enchaîner des commandes au format formulaire exec.

&& est une fonction du shell, qui permet d’enchaîner des commandes. En fait, lorsque vous utilisez cette syntaxe dans un fichier Docker, vous exploitez réellement les fonctionnalités du shell.

Si vous voulez avoir plusieurs commandes avec le formulaire exec, alors vous devez utiliser le formulaire exec pour appeler le shell comme suit ...

CMD ["sh","-c","mkdir -p ~/my/new/directory/ && cd ~/my/new/directory && touch new.file"]
37
Zak