Execução do Docker não anexando argumentos ao ponto de entrada da imagem

13

Eu tenho um Dockerfile com:

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

(não CMD)

Quando executo esse uwsgi, com razão, reclama:

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

Agora, pensei em acrescentar argumentos ao ponto de entrada da seguinte docker runmaneira:

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

No entanto, o uwsgi ainda reclama com o mesmo erro, parece que o argumento não foi anexado.

Se eu substituir o ponto de entrada, arg será adicionado:

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

... Gostaria de saber se era a --iniopção do uwsgi ignorar outros argumentos, mas não é isso:

$ 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, um erro, mas mostra que o argumento foi aceito)

Anentrópico
fonte

Respostas:

26

Acontece que a resposta é usar a forma de matriz de ENTRYPOINT(e / ou CMD) para acrescentar da linha de comando ao trabalho

com:

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

então:

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

(ok, um erro, mas mostra que o argumento foi aceito)

Esse comportamento é realmente descrito nos documentos:
https://docs.docker.com/reference/builder/#entrypoint

... Eu perdi isso quando ler neles embora :)

Anentrópico
fonte
Como altero o argumento do array na linha de comando para docker run --entrypoint ... IMAGE?
enguia ghEEz
Eu não acho que há uma forma de matriz para o comando run docs.docker.com/engine/reference/run/... talvez você tem que citá-lo por exemplodocker run --entrypoint "uwsgi --ini /home/docker/app/uwsgi_app.ini" <image>
Anentropic