Je veux 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
, 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:
Curieusement, cela fonctionne lorsque j’installe tzdata
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
Questions:
tzdata
avant ou après l'ajout de ppa?Pour exécuter dpkg
(derrière d’autres outils comme Apt) sans dialogue interactif, vous pouvez définir une variable d’environnement comme
DEBIAN_FRONTEND=noninteractive
Par exemple, vous pouvez le définir dans Dockerfile en utilisant ARG :
ARG DEBIAN_FRONTEND=noninteractive
Sur Ubuntu 18.04, j'ai créé ce fichier 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: Dans votre fichier Docker
ENV DEBIAN_FRONTEND=noninteractive
Raison:
Certains installateurs facilitent les "installations" en ayant une interface Nice. 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é
Vous pouvez définir DEBIAN_FRONTEND=noninteractive
avant votre commande pour éviter que ENV DEBIAN_FRONTEND=noninteractive
affecte les commandes après ou une image enfant:
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
tzdata \
&& rm -rf /var/lib/apt/lists/*