Bir docker konteynerine certbot yüklerken tzdata ile kullanıcı etkileşiminden kaçınılması


107

Certbot'u bir Ubuntu 16.04 resimli docker ortamında kurmak istiyorum :

Örneğin:

docker run -it ubuntu:16.04 /bin/bash

Konteynerin içindeyken, certbot'u kurmanın en kolay yolu kullanıcı müdahalesi gerektirdiğinden çalışmaz:

apt-get update && \
apt-get install -y software-properties-common && \
add-apt-repository -y -u ppa:certbot/certbot && \
apt-get install -y certbot

Sorun şu tzdataki, bu etkileşimli iletişim kutusuyla durur:

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: 

Garip bir şekilde tzdata, ppa'yı eklemeden önce kurduğumda çalışıyor:

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

Sorular:

  • tzdataPpa'yı eklemeden önce veya sonra kurarsam neden bir fark yaratır ?
  • Sertifikaları kurarken etkileşimli iletişimden kaçınmak için daha iyi bir yaklaşım var mı?

Maalesef benim için çalışmıyor.
Nico Schlömer,

Yanıtlar:


100

dpkgEtkileşimli diyalog olmadan (Apt gibi diğer araçların arkasında) çalıştırmak için , bir ortam değişkenini aşağıdaki gibi ayarlayabilirsiniz.

DEBIAN_FRONTEND=noninteractive

Örneğin, kullandığınız Dockerfile bunu ayarlayabilirsiniz ARG :

ARG DEBIAN_FRONTEND=noninteractive

4
Not: sudoOrtam değişkenlerini çoğu durumda geçemez, bu yüzden sudo DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdataişe yarar ancak başarılı DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdataolmaz.
Brendan Long,

30
Liman işçisi için şunu ekleyin: ENV DEBIAN_FRONTEND = etkileşimli değil
jersey fasulyesi

1
Bunun Ubuntu 18.04'te işe yaramadığı bir durum vardı. Ancak aşağıdaki cevap Ubuntu 18.04'te düzeltildi.
tmanthey,

28

Ubuntu 18.04 tarihinde şunu yaptım Dockerfile:

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

ABD / Denver'ı denediğimde benim için bir fark yaratmadı. Belki de tz bilgisini yanlış buldum.
wordsforthewise


13

TL&DR: DockerFile'nizin içinde

ENV DEBIAN_FRONTEND=noninteractive 

Sebep:

Bazı montör kurulumları, güzel bir ön yüze sahip olarak 'kurulumları' kolaylaştırır. Manuel kurulumunuzda bu harika olsa da, otomatik kurulumlarda bu bir sorun haline geliyor.

Aşağıdakileri ortam dizginize yerleştirerek etkileşimli yüklemeyi fazla gezebilirsiniz.

Şerefe



Kabul; Değişiklik yapma. Suggestiong için
FlyingV

4

Komuttan DEBIAN_FRONTEND=noninteractiveönce, ENV DEBIAN_FRONTEND=noninteractivealt görüntüden sonra veya alt görüntüden etkilenmekten kaçınmak için ayarlayabilirsiniz :

RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
        tzdata \
    && rm -rf /var/lib/apt/lists/*
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.