После поиска в Интернете я нашел несколько альтернатив, достойных упоминания, вместо того, чтобы каждый раз ставить DEBIAN_FRONTEND=noninteractive
перед apt-get install -y {your-pkgs}
:
Альтернатива 1: ARG DEBIAN_FRONTEND = noninteractive
Инструкция ARG определяет переменную, которую пользователи могут передать сборщику во время сборки с помощью команды сборки docker, используя флаг --build-arg =.(Ссылка: [ 6 ])
Характеристики решения:
ARG
директива устанавливается только во время сборки - Параметр «неинтерактивный» устанавливается как значение по умолчанию только для времени сборки.
- Поскольку это аргумент, его можно изменить, передав другое значение для этого аргумента, например,
docker build --build-arg DEBIAN_FRONTEND=newt
- Можно установить там, где это необходимо.Итак, хорошее мелкозернистое решение.
- Может быть установлено другое значение в конкретной команде, поэтому оно не установлено глобально.
- Область действия -
RUN
и выиграно 't влияет на другие директивы.
Пример:
RUN DEBIAN_FRONTEND=noninteractive apt-get -yq install {your-pkgs}
Альтернатива 3: ENV DEBIAN_FRONTEND = неинтерактивно
Настройка ENV DEBIAN_FRONTEND noninteractive
такжебыть альтернативой, но это очень не рекомендуется.
Другим способом было бы установить в начале запроса и сбросить его в конце файла Docker.
Характеристики решения:
ENV
директива сохранитсяПеременная окружения после сборки (не рекомендуется), кроме того - Это может быть подвержено ошибкам, если вы забудете установить его обратно к значению по умолчанию.
- Поскольку оно установлено с
ENV
, онобудут наследоваться всеми изображениями и содержать встроенные из изображения, эффективно меняя их поведение.(Как указано в [ 1 ]) Люди, использующие эти образы, сталкиваются с проблемами при интерактивной установке программного обеспечения, поскольку установщики не отображают никаких диалоговых окон. - Внешний интерфейс по умолчанию -
DEBIAN_FRONTEND=newt
(см.[ 2 ], поэтому его необходимо установить в конце файла.
Пример:
# Set for all apt-get install, must be at the very beginning of the Dockerfile.
ENV DEBIAN_FRONTEND noninteractive
...
# Non-interactive modes get set back.
ENV DEBIAN_FRONTEND newt
Альтернатива 4: RUNexport DEBIAN_FRONTEND = неинтерактивно
Характеристики решения:
- Совершенно похоже на альтернативу 2
- При разъединении страдает сплоченность: почему существует экспорт этой переменной и к чему она относится (apt-get).
- Область действия -
RUN
и не влияет на другие директивы.
Пример:
# Set the frontend and then install your package
RUN export DEBIAN_FRONTEND=noninteractive && \
...
apt-get -yq install {your-pkgs} && \
...
Больше читать (ссылки)