डॉकटर में सर्टिफिकेट स्थापित करते समय तजदता के साथ उपयोगकर्ता के संपर्क से बचना


105

मैं एक Ubuntu 16.04 छवि के साथ docker परिवेश में certbot स्थापित करना चाहता हूँ :

उदाहरण के लिए:

docker run -it ubuntu:16.04 /bin/bash

जब मैं कंटेनर के अंदर होता हूं, तो सर्टिफिकेट स्थापित करने का सबसे सरल तरीका काम नहीं करता है क्योंकि इसके लिए उपयोगकर्ता के हस्तक्षेप की आवश्यकता होती है:

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

समस्या यह है tzdata, जो इस संवादात्मक संवाद के साथ रुक जाती है:

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: 

अजीब तरह से, यह तब काम करता है जब मैं tzdataपीपा जोड़ने से पहले स्थापित करता हूं :

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

प्रशन:

  • tzdataपीपा जोड़ने से पहले या बाद में इसे स्थापित करने से मुझे फर्क क्यों पड़ता है ?
  • क्या सर्टिफिकेट स्थापित करते समय इंटरेक्टिव संवाद से बचने के लिए एक बेहतर तरीका है?

दुर्भाग्य से मेरे लिए काम नहीं कर रहा है।
निको श्लोमर

जवाबों:


100

dpkgइंटरएक्टिव संवाद के बिना (एप जैसे अन्य उपकरणों के पीछे) चलाने के लिए , आप एक पर्यावरण चर के रूप में सेट कर सकते हैं

DEBIAN_FRONTEND=noninteractive

उदाहरण के लिए, आप ARG का उपयोग करके इसे डॉकफाइल में सेट कर सकते हैं :

ARG DEBIAN_FRONTEND=noninteractive

4
नोट: sudoअधिकांश मामलों में पर्यावरण चर को पास नहीं करता है, इसलिए sudo DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdataकाम करता है लेकिन DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdataनहीं करता है।
ब्रेंडन लॉन्ग

29
Dockerfiles के लिए, इसे जोड़ें: ENV DEBIAN_FRONTEND = गैर-सक्रिय
जर्सी बीन

1
मेरे पास एक मामला था जहां यह उबंटू 18.04 पर काम नहीं करता था। लेकिन नीचे दिए गए उत्तर ने इसे Ubuntu 18.04 पर ठीक कर दिया।
तामंथी

28

उबंटू 18.04 पर मैंने ऐसा किया कि डॉकफाइल:

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

जब मैंने यूएस / डेनवर की कोशिश की, तो मुझे इससे कोई फर्क नहीं पड़ा। शायद मेरे पास tz की जानकारी गलत है।
wordforthewise


13

टीएल और डीआर: आपके डॉकरफाइल के भीतर

ENV DEBIAN_FRONTEND=noninteractive 

कारण:

कुछ इंस्टॉलर अच्छे फ्रंट-एंड होने से 'इंस्टॉलेशन' को आसान बनाते हैं। जब आप मैन्युअल इंस्टॉल करते हैं तो यह बहुत अच्छा होता है, यह स्वचालित इंस्टॉलेशन के दौरान एक समस्या बन जाता है।

आप अपने पर्यावरण स्ट्रिंग में निम्नलिखित रखकर इंटरेक्टिव इंस्टॉलेशन की सवारी कर सकते हैं।

चियर्स



माना; परिवर्तन करना। सुझाव के लिए
फ्लाइंग वी

4

बच्चे की छवि के बाद आदेशों को प्रभावित DEBIAN_FRONTEND=noninteractiveकरने से बचने के लिए आप अपने आदेश से पहले सेट कर सकते हैं ENV DEBIAN_FRONTEND=noninteractive:

RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
        tzdata \
    && rm -rf /var/lib/apt/lists/*
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.