Предотвращение взаимодействия с пользователем с tzdata при установке certbot в контейнере докера

Я хочу установить certbot в среде докера с изображением Ubuntu 16.04:

Например:

docker run -it ubuntu:16.04 /bin/bash

Когда я в контейнере, самый простой способ установить certbot не работает, поскольку он требует вмешательства пользователя:

apt-get update && \
apt-get install -y software-properties-common && \
add-apt-repository -y -u ppa:certbot/certbot && \
apt-get install -y certbot

Проблема tzdata, который останавливается с этим интерактивным диалоговым окном:

Extracting templates from packages: 100%
Preconfiguring packages ...
Configuring tzdata
------------------

Please select the geographic area in which you live. Subsequent configuration
questions will narrow this down by presenting a list of cities, representing
the time zones in which they are located.

 1. Africa      4. Australia  7. Atlantic  10. Pacific  13. Etc
 2. America     5. Arctic     8. Europe    11. SystemV
 3. Antarctica  6. Asia       9. Indian    12. US
Geographic area: 

Странно достаточно это работает, когда я устанавливаю tzdata прежде, чем добавить ppa:

apt-get update && \
apt-get install -y tzdata && \
apt-get install -y software-properties-common && \
add-apt-repository -y -u ppa:certbot/certbot && \
apt-get install -y certbot

Вопросы:

  • Почему делает это различием, устанавливаю ли я tzdata прежде или после добавления ppa?
  • Существует ли лучший подход для предотвращения интерактивного диалогового окна при установке certbot?
112
задан 26 April 2017 в 16:21

4 ответа

Работать dpkg (позади других инструментов как Кв.) без интерактивного диалога можно установить одну переменную среды как

DEBIAN_FRONTEND=noninteractive

Например, можно установить его в Dockerfile с помощью АРГУМЕНТА:

ARG DEBIAN_FRONTEND=noninteractive
104
ответ дан 22 November 2019 в 22:59

На Ubuntu 18.04 я сделал тот Dockerfile:

ENV TZ=Europe/Minsk
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt update && apt instal....
30
ответ дан 22 November 2019 в 22:59

TL&DR: В Вашем DockerFile

ENV DEBIAN_FRONTEND=noninteractive 

Причина:

Определенные Установщики делают 'установки' легче при наличии хорошего фронтенда. В то время как здорово, когда у Вас есть ручная установка, это становится проблемой во время автоматических установок.

Вы можете по поездке интерактивная установка путем размещения следующего в строку среды.

Удачи

15
ответ дан 22 November 2019 в 22:59

Можно установить DEBIAN_FRONTEND=noninteractive перед Вашей командой для предотвращения ENV DEBIAN_FRONTEND=noninteractive команды влияния после или дочернее изображение:

RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
        tzdata \
    && rm -rf /var/lib/apt/lists/*
4
ответ дан 22 November 2019 в 22:59

Другие вопросы по тегам:

Похожие вопросы: