Docker führt das Anhängen von Argumenten an Image-Entypoint nicht aus


13

Ich habe ein Dockerfile mit:

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

(nein CMD)

Wenn ich das laufen lasse beschwert sich uwsgi zu Recht:

uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***

Nun dachte ich mir, dass ich Argumente wie folgt an den Entypoint anhängen kann docker run:

$ docker run -itP uwsgi_app:0.1 --uid=docker

Allerdings beschwert sich uwsgi immer noch mit demselben Fehler, anscheinend wurde das Argument nicht angehängt.

Wenn ich den Eintrittspunkt überschreibe, wird arg hinzugefügt:

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

... Ich fragte mich, ob es Uwsgis --iniOption war, andere Argumente zu ignorieren, aber es ist nicht so:

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

(Okay, ein Fehler, zeigt aber, dass das Argument akzeptiert wurde)

Antworten:


26

Es stellt sich heraus, dass die Antwort darin besteht, die Array-Form von ENTRYPOINT(und / oder CMD) zu verwenden, um von der Befehlszeile an die Arbeit anzuhängen

mit:

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

dann:

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

(Okay, ein Fehler, zeigt aber, dass das Argument akzeptiert wurde)

Dieses Verhalten ist in den folgenden Dokumenten beschrieben:
https://docs.docker.com/reference/builder/#entrypoint

... das habe ich beim überfliegen allerdings verpasst :)


Wie ändere ich das Array-Argument in der Befehlszeile auf docker run --entrypoint ... IMAGE?
Aal Ghez

Ich glaube nicht, dass es ein Array-Formular für den Laufbefehl docs.docker.com/engine/reference/run/… gibt. Vielleicht müssen Sie es zitieren, z. B.docker run --entrypoint "uwsgi --ini /home/docker/app/uwsgi_app.ini" <image>
Anentropic
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.