कर्ता में मैं यह करना चाहता हूं:
git clone XYZ
cd XYZ
make XYZ
हालाँकि, क्योंकि कोई cd कमांड नहीं है, इसलिए मुझे हर बार पूरे रास्ते से गुजरना पड़ता है (XYZ / fullpath बनाते हैं)। इसके लिए कोई अच्छा उपाय?
कर्ता में मैं यह करना चाहता हूं:
git clone XYZ
cd XYZ
make XYZ
हालाँकि, क्योंकि कोई cd कमांड नहीं है, इसलिए मुझे हर बार पूरे रास्ते से गुजरना पड़ता है (XYZ / fullpath बनाते हैं)। इसके लिए कोई अच्छा उपाय?
जवाबों:
आप स्क्रिप्ट, या RUN के लिए अधिक जटिल पैरामीटर चला सकते हैं। यहाँ एक डॉकरीफाइल का एक उदाहरण है जिसे मैंने पहले देखने के लिए डाउनलोड किया है:
RUN cd /opt && unzip treeio.zip && mv treeio-master treeio && \
rm -f treeio.zip && cd treeio && pip install -r requirements.pip
'&&' के उपयोग के कारण, यह केवल अंतिम 'पाइप इंस्टॉल' कमांड को मिलेगा यदि पिछले सभी कमांड सफल हुए हैं।
वास्तव में, चूंकि प्रत्येक RUN एक नई प्रतिबद्ध और (वर्तमान में) एक AUFS परत बनाता है, यदि आपके पास Dockerfile में बहुत अधिक कमांड हैं, तो आप सीमा का उपयोग करेंगे, इसलिए RUN को विलय करना (जब फ़ाइल स्थिर है) बहुत हो सकती है उपयोगी बात।
cd
एकमात्र प्रभाव वर्तमान RUN
कमांड के लिए रहता है । अगला RUN
वर्तमान से शुरू होगा WORKDIR
।
किसी अन्य निर्देशिका में बदलने के लिए WORKDIR का उपयोग करें । कार्य निर्देशिका के बाद सभी RUN, CMD और ENTRYPOINT कमांड को उस निर्देशिका से निष्पादित किया जाएगा।
RUN git clone XYZ
WORKDIR "/XYZ"
RUN make
RUN git clone http://username:password@url/example.git
WORKDIR /folder
RUN make