डून ईएनवी बनाम रुन एक्सपोर्ट


95

मान लीजिए कि मैं इन आदेशों को संयोजित करना चाहता हूं

RUN command_1
ENV FOO bar
RUN command_2

जांच

RUN command_1 && export FOO=bar && command_2

और सोच रहा था कि क्या चर के साथ RUN exportबनाम सेट करना ENVबराबर था।

दूसरे शब्दों में, क्या डॉकरफाइल में इन कमांडों के बीच अंतर है?

ENV FOO bar

बनाम

RUN export FOO=bar

जवाबों:


155

जैसा कि 684 अंक द्वारा चित्रित किया गया है , exportछवियों के पार नहीं रहेगा। (यह मत भूलो कि प्रत्येक डॉकरफाइल निर्देश एक मध्यवर्ती कंटेनर उत्पन्न करेगा, एक मध्यवर्ती छवि में प्रतिबद्ध: वह छवि निर्यात किए गए मूल्य को संरक्षित नहीं
ENVकरेगा ) :

ENVजब कंटेनर एक परिणामी छवि से चलाया जाता है, तो उपयोग किए जाने वाले वातावरण चर बने रहेंगे।
आप उपयोग करने वाले मान देख सकते हैं docker inspect, और उनका उपयोग करके बदल सकते हैं docker run --env <key>=<value>

इस मुद्दे पर प्रकाश डाला गया था:

RUN export PATH=$PATH:/foo/bar # from directly in builder

जब मैं docker run [img] bash -c 'echo $PATH'इसे शामिल नहीं करता /foo/bar

कोशिश करो

एक नया डॉकफाइल युक्त बनाएं:

FROM centos:6
ENV FOO=foofoo
RUN export BAR=barbar
RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ"

फिर इसका निर्माण करें। अंतिम चरण का आउटपुट है:

Step 4/4 : RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ"
 ---> Running in eb66196b238d
foofoo  bazbaz

आप देख सकते हैं:

  • FOOमध्यवर्ती कंटेनरों के माध्यम से बनी रहती है, ENVकीवर्ड के लिए धन्यवाद ;
  • BARexportआदेश के कारण, अगले चरण पर कायम नहीं रहता है ;
  • BAZ सही ढंग से प्रदर्शित होता है क्योंकि चर का उपयोग उसी कंटेनर पर किया जाता है।

(मुझे लगता है हाँ, लेकिन :) इसका मतलब यह है कि dockerउदाहरण के runसाथ --env-fileया --envउन (इन विकल्प तर्कों द्वारा) चर निर्यात करेगा? इस तरह के एक पुराने जवाब पर टकराने के लिए खेद है, लेकिन एक वेबसर्च ने इसे मेरे सामने लाया। अच्छा जवाब btw।
हकरे

@ ठाकरे हां, वे पर्यावरण से जुड़े हैं: देखें stackoverflow.com/a/49872152/6309 और नीचे।
VonC

त्वरित उत्तर के लिए धन्यवाद, लेकिन यह उत्तर नहीं दिखाता है कि चर निर्यात के लिए चिह्नित हैं। कम से कम मुझे तो नहीं। वैसे भी, मुझे यहां अपना होमवर्क करना चाहिए, जैसे कि superuser.com/q/450868/63279 या pubs.opengroup.org/onlinepubs/9699919799/utilities/…
हकरे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.