Я установил следующую среду, чтобы во время установки apt-get не задавались вопросы / диалоги:
ENV DEBIAN_FRONTEND noninteractive # export DEBIAN_FRONTEND="noninteractive"
Что эквивалентно:
export DEBIAN_FRONTEND="noninteractive"
Тем не менее, при создании образа из файла Docker в конце одной конкретной установки пакета Debian / Ubuntu (с использованием apt-get install) конфигурация пакета debconf сообщает:
debconf: unable to initialize frontend: Noninteractive # export DEBIAN_FRONTEND="noninteractive"
debconf: (Bareword "Debconf::FrontEnd::Noninteractive" not allowed while "strict subs" in use at (eval 35) line 3, <> line 1.)
debconf: falling back to frontend: Noninteractive
Subroutine BEGIN redefined at (eval 36) line 2, <> line 1.
Вау ... Я обнаружил свою ошибку. Невозможно добавить комментарий в строки ENV в Dockerfile. Я отвечу сам, так как уверен, что это укусит других ...
Так должно быть активно обескураженный установить DEBIAN_FRONTEND
к noninteractive
через ENV
. Причина в том, что переменная среды сохраняется после сборки, например когда ты бежишь docker exec -it ... bash
. Настройка здесь не имела бы смысла.
Есть еще два возможных способа:
Установите его через ARG
поскольку это доступно только во время сборки:
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get -qq install {your-package}
При необходимости установите его на лету.
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get -qq install {your-package}
Хорошо, источником проблемы было: вы не можете использовать # для добавления комментариев к строкам ENV в Dockerfiles, потому что нет разделителя, чтобы сказать «конец переменной env», все, что находится после имени переменной и пространство сразу после него, будет в переменная.
то есть со строкой Dockerfile:
ENV DEBIAN_FRONTEND noninteractive # export DEBIAN_FRONTEND="noninteractive"
Переменная:
DEBIAN_FRONTEND
будет содержать ровно всю эту строку:
noninteractive # export DEBIAN_FRONTEND="noninteractive"
и эквивалентно выполнению:
export DEBIAN_FRONTEND='noninteractive # export DEBIAN_FRONTEND="noninteractive"'
Я почти отменял свой вопрос, но с поисковыми системами и Stack Exchange некоторые люди, вероятно, однажды обнаружат здесь свою ошибку ;-)