106 votes

Commandes multiples dans la directive Docker CMD

Je ne comprends pas ce qui se passe lorsque j'essaie d'exécuter deux commandes au moment de l'exécution via la directive CMD dans le `Dockerfile'. J'ai supposé que cela devait fonctionner :

CMD ["/etc/init.d/nullmailer", "start", ";", "/usr/sbin/php5-fpm"]

Mais ça ne fonctionne pas. Le conteneur n'a pas démarré. Donc j'ai dû faire comme ça :

CMD ["sh", "-c", "/etc/init.d/nullmailer start ; /usr/sbin/php5-fpm"]

Je ne comprends pas. Pourquoi ça ? Pourquoi la première ligne n'est pas la bonne ? Quelqu'un peut-il m'expliquer ces trucs "CMD Shell vs format JSON, etc". En mots simples.

Juste pour noter - la même chose s'est produite avec command: dans la directive docker-compose.yml comme prévu.

1voto

vedat Points 109

Je ne pense pas que vous devriez mettre une virgule après "commencer".

au lieu d'utiliser

CMD ["/etc/init.d/nullmailer", "start", ";", "/usr/sbin/php5-fpm"]

essayez

CMD ["/etc/init.d/nullmailer", "start", "/usr/sbin/php5-fpm"]

comme docker utilise "sh -c", la commande ci-dessus sera exécutée comme ci-dessous

/etc/init.d/nullmailer start
/etc/init.d/nullmailer /usr/sbin/php5-fpm

1voto

Par exemple, imaginez que vous avez deux commandes Python à exécuter python init_reset.py y python app.py . Ensuite, à l'aide de CMD, vous pouvez combiner les deux commandes avec une seule commande

CMD python init_reset.py ; python app.py

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X