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.

(大丈夫、エラーですが、引数が受け入れられたことを示しています)

回答:


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.

(大丈夫、エラーですが、引数が受け入れられたことを示しています)

この動作は、実際にはドキュメントで説明されていますhttps :
//docs.docker.com/reference/builder/#entrypoint

...私はそれらを読んでいるときにそれを逃しました:)


コマンドラインの配列引数をdocker run --entrypoint ... IMAGEに変更するにはどうすればよいですか?
うなぎghEEz

runコマンドdocs.docker.com/engine/reference/run/の配列形式があるとは思わないたぶん引用する必要があるかもしれない。たとえばdocker run --entrypoint "uwsgi --ini /home/docker/app/uwsgi_app.ini" <image>
Anentropic
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.