it-swarm.com.de

Vermeiden von Benutzerinteraktionen mit tzdata bei der Installation von certbot in einem Docker-Container

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, das mit diesem interaktiven Dialog endet:

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?
93
Philipp Claßen

Um dpkg (hinter anderen Tools wie Apt) ohne interaktiven Dialog auszuführen, können Sie eine Umgebungsvariable als festlegen

DEBIAN_FRONTEND=noninteractive

Zum Beispiel können Sie es in Dockerfile mit ARG einstellen:

ARG DEBIAN_FRONTEND=noninteractive
89
Aditya Pawaskar

Unter Ubuntu 18.04 habe ich folgendes Dockerfile erstellt:

ENV TZ=Europe/Minsk
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt update && apt instal....
23
Terentev Maksim

TL & DR: In Ihrer DockerFile

ENV DEBIAN_FRONTEND=noninteractive 

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

10
FlyingV

Sie können DEBIAN_FRONTEND=noninteractive vor Ihrem Befehl festlegen, um zu vermeiden, dass ENV DEBIAN_FRONTEND=noninteractive Befehle nach oder untergeordnetes Bild beeinflusst:

RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
        tzdata \
    && rm -rf /var/lib/apt/lists/*
3
pyfreyr