La ejecución de Docker no agrega argumentos al punto de entrada de la imagen

13

Tengo un Dockerfile con:

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

(no CMD)

Cuando ejecuto ese uwsgi con razón se queja:

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

Ahora, pensé que puedo agregar argumentos al punto de entrada de esta docker runmanera:

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

Sin embargo, uwsgi todavía se queja con el mismo error, parece que el argumento no se ha agregado.

Si anulo el punto de entrada, entonces arg se agrega:

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

... Me preguntaba si era la --iniopción de uwsgi ignorar otros argumentos, pero no es eso:

$ 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.

(está bien, un error, pero muestra que el argumento fue aceptado)

Anéntrópico
fuente

Respuestas:

26

Resulta que la respuesta es usar la forma de matriz de ENTRYPOINT(y / o CMD) para agregar desde la línea de comando al trabajo

con:

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

luego:

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

(está bien, un error, pero muestra que el argumento fue aceptado)

Este comportamiento se describe realmente en los documentos:
https://docs.docker.com/reference/builder/#entrypoint

... Me perdí eso cuando los leí rápidamente :)

Anéntrópico
fuente
¿Cómo cambio el argumento de matriz en la línea de comandos para ejecutar Docker --entrypoint ... IMAGE?
anguila ghEEz
No creo que haya una forma de matriz para el comando de ejecución docs.docker.com/engine/reference/run/… tal vez tenga que citarlo, por ejemplodocker run --entrypoint "uwsgi --ini /home/docker/app/uwsgi_app.ini" <image>
Anentropic