Docker nie dodaje argumentów do punktu wejścia obrazu


13

Mam plik Docker z:

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

(nie CMD)

Kiedy biegam, uwsgi słusznie narzeka:

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

Pomyślałem, że mogę dołączyć argumenty do punktu wejścia w następujący docker runsposób:

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

Jednak uwsgi nadal narzeka na ten sam błąd, wygląda na to, że arg nie został dołączony.

Jeśli przesłonię punkt wejścia, wówczas arg zostanie dodany:

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

... zastanawiałem się, czy to --iniopcja uwsgi ignoruje inne argumenty, ale to nie tak:

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

(OK, błąd, ale pokazuje, że arg został zaakceptowany)

Odpowiedzi:


26

Okazuje się, że odpowiedzią jest użycie formy tablicowej ENTRYPOINT(i / lub CMD) w celu dołączenia z wiersza poleceń do pracy

z:

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

następnie:

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

(OK, błąd, ale pokazuje, że arg został zaakceptowany)

To zachowanie jest faktycznie opisane w dokumentacji:
https://docs.docker.com/reference/builder/#entrypoint

... Tęskniłem za tym, gdy je czytałem :)


Jak zmienić argument tablicy w wierszu poleceń na uruchomienie dokera --entrypoint ... IMAGE?
węgorz ghEEz

Nie wydaje mi się, aby istniała tablica dla polecenia uruchomienia docs.docker.com/engine/reference/run/… może trzeba ją zacytować np.docker run --entrypoint "uwsgi --ini /home/docker/app/uwsgi_app.ini" <image>
Anentropic
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.