Je souhaite installer certbot dans un environnement de menu fixe avec une image Ubuntu 16.04:
Par exemple:
docker run -it ubuntu:16.04 /bin/bash
Lorsque je suis dans le conteneur, le moyen le plus simple d'installer certbot ne fonctionne pas car il nécessite l'intervention de l'utilisateur:
apt-get update && \
apt-get install -y software-properties-common && \
add-apt-repository -y -u ppa:certbot/certbot && \
apt-get install -y certbot
Le problème est tzdata
, ce qui s'arrête avec ce dialogue interactif:
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:
Étrangement, cela fonctionne lorsque tzdata
j'installe avant d'ajouter le 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
Des questions:
- Pourquoi cela fait-il une différence si
tzdata
j'installe avant ou après l'ajout du ppa? - Existe-t-il une meilleure approche pour éviter le dialogue interactif lors de l’installation de certbot?
16.04
ppa
automation
docker
letsencrypt
Philipp Claßen
la source
la source
Réponses:
Pour exécuter
dpkg
(derrière d’autres outils comme Apt) sans dialogue interactif, vous pouvez définir une variable d’environnement comme suit:Par exemple, vous pouvez le définir dans Dockerfile en utilisant ARG :
la source
sudo
dans la plupart des cas, les variables d'environnement ne sont pas transmises. Celasudo DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdata
fonctionne maisDEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdata
ne fonctionne pas.Sur Ubuntu 18.04, j'ai créé ce fichier Dockerfile:
la source
TL & DR: dans votre fichier Docker
Raison:
Certains installateurs facilitent les "installations" en ayant un front-end agréable. Bien que ce soit formidable lorsque vous effectuez une installation manuelle, cela devient un problème lors des installations automatisées.
Vous pouvez surpasser l'installation interactive en plaçant les éléments suivants dans votre chaîne d'environnement.
À votre santé
la source
Vous pouvez définir
DEBIAN_FRONTEND=noninteractive
avant votre commande pour éviter d’ENV DEBIAN_FRONTEND=noninteractive
affecter les commandes après ou une image enfant:la source