Подтвердить что ты не робот

Возможно ли ответить на вопросы диалога при установке в докере?

Можно ли как-то ответить на вопросы, которые представлены в виде диалогов при установке некоторых пакетов с помощью apt-get?

Например, я пытаюсь настроить контейнер, содержащий пакет mail-stack-delivery, с помощью:

FROM ubuntu

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

Однако этот dockerfile генерирует десятки ошибок при построении, которые расположены вдоль строк:

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: 

Из того, что я понимаю, просто просто не могу ответить на диалоги, но есть ли способ передать параметр для ответа на каждый вопрос заранее? Я знаю, что это просто меняет некоторые конфигурации, поэтому я мог бы сделать это после факта, но, по-видимому, лучше позволить сценариям установки сделать это, чтобы все было правильно настроено.

4b9b3361

Ответ 1

См. обсуждение здесь: https://github.com/docker/docker/issues/4032. Короче говоря, настройка ENV DEBIAN_FRONTEND noninteractive не рекомендуется, так как она сохраняется в конечном изображении, даже если вы запускаете что-то вроде docker run -i -t ... bash. Поэтому рекомендуется либо опустить DEBIAN_FRONTEND и жить с предупреждением, либо указать его явно для каждой команды, например. RUN DEBIAN_FRONTEND=noninteractive apt-get install -y -q package.

К счастью, новая директива ARG устанавливает переменные, которые живут только во время сборки, поэтому теперь возможно более элегантное решение, которое указано в DockerFile, но не сохраняется в конечном изображении: ARG DEBIAN_FRONTEND=noninteractive.

Ответ 2

Вы должны установить DEBIAN_FRONTEND = неинтерактивный как envvar. В большинстве случаев это, по крайней мере, сделает так, чтобы установка не выходила из строя.

Также как упоминалось @Azdle, использование параметров debconf-set позволит вам установить определенные элементы.

Ответ 3

Как обычно, поиски нашли немного больше.

Ответ debconf-set-selections. Manpage: http://manpages.ubuntu.com/manpages/oneiric/en/man1/debconf-set-selections.1.html

Чтобы найти параметры, которые можно установить, используйте debconf-get-selections в системе, на которой уже установлен пакет. Вам потребуется установить debconf-utils для второй команды.

Ответ 4

Это рабочее решение:

ARG DEBIAN_FRONTEND = неинтерактивный