Quero instalar o certbot em um ambiente docker com uma imagem do Ubuntu 16.04:
Por exemplo:
docker run -it ubuntu:16.04 /bin/bash
Quando estou dentro do contêiner, a maneira mais direta de instalar o certbot não funciona, pois requer intervenção do usuário:
apt-get update && \
apt-get install -y software-properties-common && \
add-apt-repository -y -u ppa:certbot/certbot && \
apt-get install -y certbot
O problema é tzdata
que para com este diálogo interativo:
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:
Curiosamente, ele funciona quando eu instalo tzdata
antes de adicionar o 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
Questões:
- Por que faz diferença se eu instalo
tzdata
antes ou depois de adicionar o ppa? - Existe uma abordagem melhor para evitar o diálogo interativo ao instalar o certbot?
16.04
ppa
automation
docker
letsencrypt
Philipp Claßen
fonte
fonte
Respostas:
Para executar
dpkg
(atrás de outras ferramentas como o Apt) sem diálogo interativo, você pode definir uma variável de ambiente comoPor exemplo, você pode configurá-lo no Dockerfile usando ARG :
fonte
sudo
na maioria dos casos, não passa variáveis de ambiente, por issosudo DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdata
funciona, masDEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdata
não passa .No Ubuntu 18.04, fiz o Dockerfile:
fonte
TL&DR: no DockerFile
Razão, motivo:
Certos instaladores facilitam as 'instalações' com um bom front-end. Embora isso seja ótimo quando você tem uma instalação manual, isso se torna um problema durante as instalações automatizadas.
Você pode acompanhar a instalação interativa colocando o seguinte em sua cadeia de ambiente.
Felicidades
fonte
Você pode definir
DEBIAN_FRONTEND=noninteractive
antes do seu comando para evitar queENV DEBIAN_FRONTEND=noninteractive
os comandos afetem ou a imagem filho:fonte