2016-11-12 14 views
15

इस प्रयोग एक कंटेनर इस डोकर फ़ाइल का उपयोग कर निर्माण करने के लिए कोशिश करता है:Dockerfile बनाम डोकर-लिखें मात्रा

FROM lambdalinux/baseimage-amzn:2016.09-000 
COPY ./bundle /opt/bundle/ 
VOLUME /bundle 

तो कंटेनर के अंदर, एक /opt/bundle/file.txt बना सकते हैं और इसमें कुछ पाठ डाल दिया। लेकिन उस फ़ाइल मेजबान पर बंडल निर्देशिका में दिखाई नहीं था के रूप में मैं Should I include my code with COPY/ADD or a volume अंतिम अनुच्छेद को पढ़ने के बाद उम्मीद:

ऐसे मामले तुम दोनों का उपयोग करना चाहेंगे हो सकता है। आप छवि को COPY का उपयोग करके कोड शामिल कर सकते हैं, और विकास के दौरान मेजबान से कोड शामिल करने के लिए अपनी रचना फ़ाइल में वॉल्यूम का उपयोग कर सकते हैं। वॉल्यूम छवि की निर्देशिका सामग्री को ओवरराइड करता है।

डॉकरफ़ाइल वॉल्यूम docker-compose.yml वॉल्यूम जैसा नहीं करता है? यदि हां, तो यह कैसे किया जा सकता है ताकि मेजबान निर्देशिका में परिवर्तन इस मामले में कंटेनर निर्देशिका के अंदर दिखाई दे?

मैं भी मेजबान bundle/play.txt पर एक फ़ाइल बनाया है, लेकिन है कि /opt/bundle/...

उत्तर

17

एक VOLUME instruction dockerfile में एक माउंट बिंदु बनाता है कंटेनर के अंदर दिखाई नहीं था, लेकिन शुरू में केवल डोकर के आंतरिक डेटा डायरेक्टरी में मैप करता है।

होस्ट फ़ाइल सिस्टम में वॉल्यूम मैप करने के लिए, आपको यह निर्दिष्ट करने की आवश्यकता है कि होस्ट पर कौन सा पथ वॉल्यूम पर मैप किया जाना चाहिए। आप इसे volumes parameter का उपयोग करके डॉकर-कंपोज़ फ़ाइल में कर सकते हैं। (ध्यान दें: आप डॉकरफ़ाइल में उन्हें घोषित किए बिना डॉकर-कंपोज़ का उपयोग करके वॉल्यूम बना सकते हैं।)

ध्यान दें कि होस्ट से किसी कंटेनर में निर्देशिका मैप करते समय, होस्ट पर निर्देशिका सामग्री कंटेनर में सामग्री को प्रतिस्थापित करेगी, इसके विपरीत नहीं।

+0

क्या मैं केवल डॉकफाइल वॉल्यूम घोषणा को छोड़ सकता हूं, जब मैं केवल compose.yml वॉल्यूम परिभाषा का उपयोग करता हूं? – velop

+2

@ लिफा हां, आप कर सकते हैं। वास्तव में, यह कुछ मामलों में बेहतर हो सकता है - देखें [यह आलेख] (https://boxboat.com/2017/01/23/volumes-and-dockerfiles-dont-mix/)। – augurar

संबंधित मुद्दे