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 tzdata
sebelum 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
tzdata
sebelum atau setelah menambahkan ppa? - Apakah ada pendekatan yang lebih baik untuk menghindari dialog interaktif saat memasang certbot?
16.04
ppa
automation
docker
letsencrypt
Philipp Claßen
sumber
sumber
Jawaban:
Untuk menjalankan
dpkg
(di belakang alat lain seperti Apt) tanpa dialog interaktif, Anda dapat menetapkan satu variabel lingkungan sebagaiMisalnya, Anda dapat mengaturnya di Dockerfile menggunakan ARG :
sumber
sudo
tidak melewati variabel lingkungan melalui sebagian besar kasus, jadisudo DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdata
berfungsi tetapiDEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdata
tidak.Di Ubuntu 18.04 saya melakukan itu Dockerfile:
sumber
TL&DR: Di dalam DockerFile Anda
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
sumber
Anda dapat mengatur
DEBIAN_FRONTEND=noninteractive
sebelum perintah Anda untuk menghindariENV DEBIAN_FRONTEND=noninteractive
memengaruhi perintah setelah atau gambar anak:sumber