Czy podczas instalacji pod Dockerem można odpowiadać na pytania w oknie dialogowym?

Czy można w jakiś sposób odpowiedzieć na pytania, które są wyświetlane jako okna dialogowe podczas instalacji niektórych pakietów przy użyciu apt-get?

Na przykład próbuję skonfigurować kontener zawierający mail-stack-delivery pakiet z:

FROM ubuntu

RUN apt-get install -y mail-stack-delivery

Jednak ten plik dockerfile generuje dziesiątki błędów po zbudowaniu, które są następujące:

debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (Can't locate Term/ReadLine.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7, <> line 11.)
debconf: falling back to frontend: Teletype
dpkg-preconfigure: unable to re-open stdin: 

Z tego, co rozumiem, po prostu nie mogę odpowiedzieć na okna dialogowe, ale czy jest jakiś sposób, aby przekazać parametr, aby odpowiedzieć na każde pytanie w Zaliczka? Wiem, że to tylko zmiana niektórych konfiguracji, więc mogę to zrobić po fakcie, ale prawdopodobnie lepiej niech skrypty instalacyjne to zrobić, aby wszystko zostało ustawione poprawnie.

Author: Cœur, 2014-03-18

5 answers

Zobacz dyskusję tutaj: https://github.com/docker/docker/issues/4032 . krótko mówiąc, ustawienie ENV DEBIAN_FRONTEND noninteractive nie jest zalecane, ponieważ utrzymuje się na ostatecznym obrazie, nawet podczas uruchamiania czegoś takiego jak docker run -i -t ... bash. Dlatego zaleca się albo pominięcie DEBIAN_FRONTEND i życie z ostrzeżeniem, albo podanie go jawnie dla każdego polecenia, np. RUN DEBIAN_FRONTEND=noninteractive apt-get install -y -q package.

Na szczęście, nowa dyrektywa ARG ustawia zmienne, które żyją tylko podczas budowania, więc możliwe jest teraz bardziej eleganckie rozwiązanie, które jest określone w DockerFile jeszcze nie utrzymuje się na ostatecznym obrazie: ARG DEBIAN_FRONTEND=noninteractive.

 50
Author: Ohad Schneider,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-15 10:40:36

Powinieneś ustawić DEBIAN_FRONTEND = noniteractive jako envvar. W większości przypadków to przynajmniej sprawi, że instalacja nie będzie błąd.

Również, jak wspomniał @Azdle, użycie debconf-set-selections pozwoli Ci ustawić określone elementy.

 25
Author: cpuguy83,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-09 16:57:38

Jak zwykle, trochę więcej poszukiwań znalazło odpowiedź.

Odpowiedź brzmi debconf-set-selections. Manpage: http://manpages.ubuntu.com/manpages/oneiric/en/man1/debconf-set-selections.1.html

Aby znaleźć opcje, które można ustawić, użyj debconf-get-selections w systemie, który ma już zainstalowany pakiet. Musisz zainstalować debconf-utils dla drugiego polecenia.

 10
Author: Azdle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-17 22:25:44

Jest To rozwiązanie robocze:

ARG DEBIAN_FRONTEND=nieinteractive

 3
Author: vovandos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-18 19:30:51

ENV DEBIAN_FRONTEND noninteractive nie działa dla mnie

ARG DEBIAN_FRONTEND=noninteractive

Ale RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections did

 0
Author: ishandutta2007,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-08 20:57:47