Menghindari interaksi pengguna dengan tzdata saat memasang certbot dalam wadah buruh pelabuhan


108

Saya ingin menginstal certbot di lingkungan buruh pelabuhan dengan gambar Ubuntu 16.04:

Sebagai contoh:

docker run -it ubuntu:16.04 /bin/bash

Ketika saya berada di dalam wadah, cara paling mudah untuk menginstal certbot tidak berfungsi karena memerlukan intervensi pengguna:

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

Masalahnya adalah tzdata, yang berhenti dengan dialog interaktif ini:

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: 

Anehnya, itu berfungsi ketika saya menginstal tzdatasebelum menambahkan 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

Pertanyaan:

  • Mengapa membuat perbedaan apakah saya menginstal tzdatasebelum atau setelah menambahkan ppa?
  • Apakah ada pendekatan yang lebih baik untuk menghindari dialog interaktif saat memasang certbot?

Sayangnya, tidak bekerja untuk saya.
Nico Schlömer

Jawaban:


100

Untuk menjalankan dpkg(di belakang alat lain seperti Apt) tanpa dialog interaktif, Anda dapat menetapkan satu variabel lingkungan sebagai

DEBIAN_FRONTEND=noninteractive

Misalnya, Anda dapat mengaturnya di Dockerfile menggunakan ARG :

ARG DEBIAN_FRONTEND=noninteractive

4
Catatan: sudotidak melewati variabel lingkungan melalui sebagian besar kasus, jadi sudo DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdataberfungsi tetapi DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdatatidak.
Brendan Long

30
Untuk dockerfiles, tambahkan ini: ENV DEBIAN_FRONTEND = noninteractive
jersey jersey

1
Saya punya kasus di mana ini tidak berfungsi di Ubuntu 18.04. Tetapi jawaban di bawah ini memang memperbaikinya pada Ubuntu 18.04.
tmanthey

Periksa askubuntu.com/a/1098881/112499 karena jawaban itu benar-benar memperbaiki masalah alih-alih menyembunyikannya seperti ini.
Bayangan

29

Di Ubuntu 18.04 saya melakukan itu Dockerfile:

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

Sepertinya tidak membuat perbedaan bagi saya ketika saya mencoba US / Denver. Mungkin saya salah tz info.
kata


13

TL&DR: Di dalam DockerFile Anda

ENV DEBIAN_FRONTEND=noninteractive 

Alasan:

Installer tertentu membuat 'instalasi' lebih mudah dengan memiliki front-end yang bagus. Meskipun ini hebat ketika Anda memiliki instalasi manual, ini menjadi masalah selama instalasi otomatis.

Anda dapat menggunakan instalasi interaktif dengan menempatkan berikut ini di string lingkungan Anda.

Tepuk tangan



Sepakat; Membuat perubahan. to Suggestiong
FlyingV

4

Anda dapat mengatur DEBIAN_FRONTEND=noninteractivesebelum perintah Anda untuk menghindari ENV DEBIAN_FRONTEND=noninteractivememengaruhi perintah setelah atau gambar anak:

RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
        tzdata \
    && rm -rf /var/lib/apt/lists/*
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.