Docker 运行未将参数附加到图像入口点

Docker 运行未将参数附加到图像入口点

我有一个 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 仍然抱怨同样的错误,似乎参数尚未被附加。

如果我覆盖入口点,则会添加参数:

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

... 我想知道这是否是 uwsgi 的--ini选项忽略了其他参数,但事实并非如此:

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

(好的,一个错误,但是显示参数已被接受)

答案1

ENTRYPOINT事实证明,答案是使用(and/or )的数组形式,CMD以便从命令行附加到工作

和:

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

然后:

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

(好的,一个错误,但是显示参数已被接受)

这种行为实际上在文档中有描述:
https://docs.docker.com/reference/builder/#entrypoint

...不过我在浏览的时候错过了这一点 :)

相关内容