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

...我想知道这是否是uwsgi --ini忽略其他args 的选项,但是不是这样的:

$ 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已被接受)

Answers:


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

...当我略读它们时,我很想念它:)


如何在命令行上将数组参数更改为docker run --entrypoint ... IMAGE?
鳗鱼ghEEz

我认为运行命令docs.docker.com/engine/reference/run / ...没有数组形式。也许您必须引用它,例如docker run --entrypoint "uwsgi --ini /home/docker/app/uwsgi_app.ini" <image>
Anentropic
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.