Docker run remplacer point d'entrée avec un script shell qui accepte les arguments
J'ai entrypoint script shell qui accepte les arguments -a-b.
J'ai le travail docker-composer.yml fichier où je remplace tomcat, point d'entrée de l'enseignement:
entrypoint: /usr/local/tomcat/entrypoint.sh -a param1 -b param2
Qu'est-ce que docker run alternative?
docker run --entrypoint "/usr/local/tomcat/entrypoint.sh -a param1 -b param2" tomcat:jre8
ne fonctionne pas
J'obtiens:
docker: Error response from daemon:
invalid header field value "oci runtime error: container_linux.go:247:
starting container process caused \"exec:
\\\"/usr/local/tomcat/entrypoint.sh -a param1 -b param2\\\":
stat /usr/local/tomcat/entrypoint.sh -a param1 -b param2:
no such file or directory\"\n".
FYI:
docker run --entrypoint "/usr/local/tomcat/entrypoint.sh" tomcat:jre8
œuvres de Docker point de vue, mais, évidemment, le script échoue
Vous devez vous connecter pour publier un commentaire.
C'est parce que des citations vous êtes à l'aide autour de votre commande.
Lorsque vous exécutez
docker run --entrypoint "/usr/local/tomcat/entrypoint.sh -a param1 -b param2" tomcat:jre8
Docker traite tout ce qui est à l'intérieur de ces citations comme un seul fichier de script.Comme vous pouvez le voir à partir de l'erreur:
Il essaye d'effectuer une
stat
sur le fichier avant de l'exécuter, de sorte qu'il ne sait pas si elle existe.Place les arguments de votre point d'entrée à la fin de votre panneau de commande comme suit:
Votre commande devient:
Regarder les extraits de code dans la documentation officielle:
https://docs.docker.com/engine/reference/run/#/entrypoint-default-command-to-execute-at-runtime
run
et non pas à la fin de la commande..Je pense que c'est aussi à noter:
Si vous avez un tas d'arguments à votre
docker run
de commande, votre--entrypoint
devrait venir en premier.Je ne sais pas lequel de mes arguments était le problème, mais en mettant en
--entrypoint "/bin/bash"
à la fin n'a pas à prévenir l'exécution du point d'entrée de la Dockerfile. Mes arguments inclus:Je ne suis pas sûr que vous pouvez le faire selon le rapport officiel docker documentation:
https://docs.docker.com/engine/reference/builder/#/environment-replacement
"$entrypoint" $@
et pas/bin/sh -c "$entrypoint" $@
. Pour passer des arguments à votre point d'entrée, vous le faites tout simplement comme un cuit à point d'entrée: les spécifier comme arguments supplémentaires à la fin de votredocker run
de commande.