我有一个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的--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被接受)
事实certificate,答案是使用ENTRYPOINT (和/或CMD )的数组forms,以便从命令行追加到工作
有:
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
…我错过了,当浏览他们虽然:)