Ich möchte certbot in einer Docker-Umgebung mit einem Ubuntu 16.04-Image installieren :
Zum Beispiel:
docker run -it ubuntu:16.04 /bin/bash
Wenn ich mich im Container befinde, funktioniert die einfachste Installation von certbot nicht, da der Benutzer eingreifen muss:
apt-get update && \
apt-get install -y software-properties-common && \
add-apt-repository -y -u ppa:certbot/certbot && \
apt-get install -y certbot
Das Problem ist tzdata
, welches mit diesem interaktiven Dialog aufhört:
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:
Seltsamerweise funktioniert es, wenn ich tzdata
vor dem Hinzufügen des ppa installiere :
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
Fragen:
- Warum macht es einen Unterschied, ob ich
tzdata
vor oder nach dem Hinzufügen des ppa installiere ? - Gibt es einen besseren Ansatz, um den interaktiven Dialog bei der Installation von certbot zu vermeiden?
16.04
ppa
automation
docker
letsencrypt
Philipp Claßen
quelle
quelle
Antworten:
Um
dpkg
(hinter anderen Tools wie Apt) ohne interaktiven Dialog zu laufen , können Sie eine Umgebungsvariable als festlegenZum Beispiel können Sie es in Dockerfile mit ARG einstellen :
quelle
sudo
In den meisten Fällen werden Umgebungsvariablen nicht weitergeleitet, diessudo DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdata
funktioniert jedochDEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdata
nicht.Unter Ubuntu 18.04 habe ich folgendes Dockerfile erstellt:
quelle
TL & DR: In Ihrem DockerFile
Grund:
Bestimmte Installer vereinfachen die Installation, indem sie ein nettes Front-End haben. Dies ist zwar hilfreich, wenn Sie eine manuelle Installation haben, wird jedoch bei automatisierten Installationen zu einem Problem.
Sie können die interaktive Installation umgehen, indem Sie Folgendes in Ihre Umgebungszeichenfolge einfügen.
Prost
quelle
Sie können
DEBIAN_FRONTEND=noninteractive
vor Ihrem Befehl Folgendes festlegen , umENV DEBIAN_FRONTEND=noninteractive
Auswirkungen auf Befehle nach oder untergeordnetes Bild zu vermeiden :quelle