Я хочу установить 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?
16.04
ppa
automation
docker
letsencrypt
Филипп Классен
источник
источник
Ответы:
Чтобы запустить
dpkg
(за другими инструментами, такими как Apt) без интерактивного диалога, вы можете установить одну переменную среды какНапример, вы можете установить его в Dockerfile, используя ARG :
источник
sudo
в большинстве случаев не передает переменные окружения, поэтомуsudo DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdata
работает, ноDEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdata
не проходит.На Ubuntu 18.04 я сделал этот Dockerfile:
источник
TL & DR: в вашем DockerFile
Причина:
Некоторые установщики облегчают «установку», имея хороший внешний интерфейс. Хотя это замечательно, если у вас есть ручная установка, это становится проблемой при автоматической установке.
Вы можете переопределить интерактивную установку, поместив следующую строку в строку окружения.
ура
источник
Вы можете установить
DEBIAN_FRONTEND=noninteractive
перед вашей командой, чтобы избежатьENV DEBIAN_FRONTEND=noninteractive
влияния команд после или дочернего изображения:источник