Docker запускает не добавляя аргументы к точке входа в изображение

13

У меня есть Dockerfile с:

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

(нет CMD)

Когда я бегу, UWSGI справедливо жалуется:

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

Теперь я подумал, что могу добавить аргументы к точке входа docker runследующим образом:

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

Однако uwsgi все еще жалуется с той же ошибкой, кажется, что arg не был добавлен.

Если я переопределяю точку входа, то добавляется arg:

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

... Я задавался вопросом, была ли --iniопция uwsgi игнорировать другие аргументы, но это не так:

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

(хорошо, ошибка, но показывает, что arg был принят)

Anentropic
источник

Ответы:

26

Получается, что ответом является использование массива ENTRYPOINT(и / или CMD) для добавления из командной строки в работу.

с:

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

тогда:

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

(хорошо, ошибка, но показывает, что arg был принят)

Это поведение на самом деле описано в документации:
https://docs.docker.com/reference/builder/#entrypoint

... Я пропустил это, когда снял их читать, хотя :)

Anentropic
источник
Как изменить аргумент массива в командной строке для запуска Docker --entrypoint ... IMAGE?
угорь ghEEz
Я не думаю, что есть форма массива для команды запуска docs.docker.com/engine/reference/run/… возможно, вам придется процитировать ее, напримерdocker run --entrypoint "uwsgi --ini /home/docker/app/uwsgi_app.ini" <image>
Anentropic