Chcę zainstalować certbota w środowisku dokera z obrazem Ubuntu 16.04:
Na przykład:
docker run -it ubuntu:16.04 /bin/bash
Kiedy jestem w kontenerze, najprostszy sposób na zainstalowanie certbota nie działa, ponieważ wymaga interwencji użytkownika:
apt-get update && \
apt-get install -y software-properties-common && \
add-apt-repository -y -u ppa:certbot/certbot && \
apt-get install -y certbot
Problem polega na tym tzdata
, że kończy się to interaktywne okno dialogowe:
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:
O dziwo, działa gdy instaluję tzdata
przed dodaniem 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
Pytania:
- Dlaczego robi to różnicę, czy instaluję
tzdata
przed czy po dodaniu ppa? - Czy istnieje lepsze podejście do unikania interaktywnego okna dialogowego podczas instalowania certbota?
16.04
ppa
automation
docker
letsencrypt
Philipp Claßen
źródło
źródło
Odpowiedzi:
Aby uruchomić
dpkg
(za innymi narzędziami, takimi jak Apt) bez interaktywnego dialogu, możesz ustawić jedną zmienną środowiskową jakoNa przykład możesz ustawić go w Dockerfile za pomocą ARG :
źródło
sudo
w większości przypadków nie przepuszcza zmiennych środowiskowych, więcsudo DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdata
działa, aleDEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdata
nie.Na Ubuntu 18.04 zrobiłem ten plik Docker:
źródło
TL&DR: w twoim pliku Docker
Powód:
Niektórzy instalatorzy ułatwiają „instalacje” dzięki ładnemu interfejsowi. Chociaż jest to świetne, gdy masz instalację ręczną, staje się to problemem podczas instalacji automatycznych.
Możesz przejechać instalację interaktywną, umieszczając następujące elementy w łańcuchu środowiska.
Twoje zdrowie
źródło
Możesz ustawić
DEBIAN_FRONTEND=noninteractive
przed poleceniem, aby unikaćENV DEBIAN_FRONTEND=noninteractive
wpływania na polecenia po lub obraz podrzędny:źródło