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

Я хочу установить 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?

5 ответов

Решение

Бежать dpkg (за другими инструментами, такими как Apt) без интерактивного диалога вы можете установить одну переменную среды как

DEBIAN_FRONTEND=noninteractive

На 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....

TL&DR: в вашем DockerFile

ENV DEBIAN_FRONTEND=noninteractive 

Причина:

Некоторые установщики облегчают "установку", имея хороший внешний интерфейс. Хотя это замечательно, если у вас есть ручная установка, это становится проблемой при автоматической установке.

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

ура

Вы можете установить 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/*

Вы должны просто установить свой часовой пояс ПЕРЕД установкой tzdata:

      # Set timezone:
RUN ln -snf /usr/share/zoneinfo/$CONTAINER_TIMEZONE /etc/localtime && echo $CONTAINER_TIMEZONE > /etc/timezone

# Install dependencies:
RUN apt-get update && apt-get install -y tzdata
Другие вопросы по тегам