web-dev-qa-db-fra.com

Comment remplacer la commande CMD dans la ligne d'exécution du docker

Comment vous pouvez remplacer le cdm basé sur la documentation de docker: https://docs.docker.com/reference/builder/#cmd

Vous pouvez remplacer la commande CMD

Dockerfile:

RUN chmod +x /srv/www/bin/* & chmod -R 755 /srv/www/app
RUN pip3 install -r /srv/www/app/pip-requirements.txt
EXPOSE 80
CMD ["/srv/www/bin/gunicorn.sh"]

la commande docker run est:

docker run --name test test/test-backend

J'ai essayé

docker run --name test test --cmd ["/srv/www/bin/gunicorn.sh"]
docker run --name test test cmd ["/srv/www/bin/gunicorn.sh"]

Mais la console dit cette erreur:

System error: exec: "cmd": executable file not found in $PATH
13
Hetdev

La bonne façon de le faire est de supprimer cmd ["..."]

 docker run --name test test/test-backend /srv/www/bin/gunicorn.sh
14
Hetdev

Dockerfile utilise l'instruction CMD qui autorise les valeurs par défaut pour le conteneur en cours d'exécution.

La ligne ci-dessous exécutera le script /srv/www/bin/gunicorn.sh comme son déjà fourni dans CMD instruction dans votre Dockerfile comme valeur par défaut, qui est exécutée en interne comme /bin/sh -c /srv/www/bin/gunicorn.sh pendant l'exécution.

 docker run --name test test/test-backend 

Maintenant, dites si vous voulez exécuter autre chose, ajoutez simplement cela à la fin du docker run. Maintenant, la ligne ci-dessous devrait exécuter bash à la place.

docker run --name test test/test-backend /bin/bash

Réf: Meilleures pratiques Dockerfile

4
askb

Pour ceux qui utilisent docker-compose:

docker-compose run [your-service-name-here-from-docker-compose.yml] /srv/www/bin/gunicorn.sh

Dans mon cas, je réutilise le même service docker pour exécuter les versions de développement et de production de mon application React:

docker-compose run my-react-app npm run build

Va exécuter mon webpack.config.production.js et générez l'application dans dist. Mais oui, à la question d'origine, vous pouvez remplacer le CMD dans la CLI.

1
Dylan Pierce