我有一个 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
忽略其他参数的选项,但事实并非如此:
$ 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 已被接受)
事实证明,答案是使用
ENTRYPOINT
(and/orCMD
) 的数组形式,以便从命令行附加到工作和:
然后:
(好的,一个错误,但显示 arg 已被接受)
这种行为实际上在文档中有所描述:
https ://docs.docker.com/reference/builder/#entrypoint
......虽然我在浏览它们时错过了它:)