Docker run n'ajoutant pas d'arguments au point d'entrée de l'image

13

J'ai un Dockerfile avec:

ENTRYPOINT ["uwsgi", "--ini /home/docker/app/uwsgi_app.ini"]

(non CMD)

Quand je cours, uwsgi se plaint à juste titre:

uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***

Maintenant, je pensais que je pouvais ajouter des arguments au point d'entrée via docker runcomme ceci:

$ docker run -itP uwsgi_app:0.1 --uid=docker

Cependant uwsgi se plaint toujours de la même erreur, il semble que l'argument n'ait pas été ajouté.

Si je remplace le point d'entrée, l'argument est ajouté:

$ docker run -itP --entrypoint bash uwsgi_app:0.1 --uid=docker
bash: --uid=docker: invalid option

... Je me demandais si c'était l' --inioption d'uwsgi en ignorant les autres arguments, mais ce n'est pas ça:

$ docker run -itP --entrypoint bash uwsgi_app:0.1
[ root@88941de25b1f:/home/docker ]$ uwsgi --ini /home/docker/app/uwsgi_app.ini --uid=docker
user docker not found.

(ok, une erreur, mais montre que l'argument a été accepté)

Anentropique
la source

Réponses:

26

Il s'avère que la réponse est d'utiliser la forme de tableau de ENTRYPOINT(et / ou CMD) pour que l'ajout de la ligne de commande fonctionne

avec:

ENTRYPOINT ["uwsgi", "--ini", "/home/docker/app/uwsgi_app.ini"]

ensuite:

$ docker run -itP uwsgi_app:0.2 --uid=docker
...
user docker not found.

(ok, une erreur, mais montre que l'argument a été accepté)

Ce comportement est en fait décrit dans les documents:
https://docs.docker.com/reference/builder/#entrypoint

... J'ai raté ça quand je les ai lus :)

Anentropique
la source
Comment changer l'argument du tableau sur la ligne de commande en docker run --entrypoint ... IMAGE?
anguille ghEEz
Je ne pense pas qu'il existe un formulaire de tableau pour la commande run docs.docker.com/engine/reference/run/… peut-être que vous devez le citer par exempledocker run --entrypoint "uwsgi --ini /home/docker/app/uwsgi_app.ini" <image>
Anentropic