2014-06-17 6 views
39

Docker documentationONBUILD अनुदेश का उपयोग करने के लिए यदि आप इस परिदृश्य पर है पता चलता है:प्रत्येक परिवर्तन के बाद कंटेनर पुनर्निर्माण?

उदाहरण के लिए, यदि आपकी छवि एक पुन: प्रयोज्य अजगर आवेदन बिल्डर है, यह आवेदन स्रोत कोड की आवश्यकता होगी एक विशेष निर्देशिका में जोड़े जाने के लिए, और उसके बाद इसे बनाने के लिए एक निर्माण स्क्रिप्ट की आवश्यकता हो सकती है। आप अभी एडीडी और रन नहीं कह सकते हैं, क्योंकि आपके पास अभी तक एप्लिकेशन स्रोत कोड तक पहुंच नहीं है, और यह प्रत्येक एप्लिकेशन निर्माण के लिए अलग होगा। आप बस एप्लिकेशन डेवलपर्स को बॉयलरप्लेट डॉकरफाइल के साथ अपने एप्लिकेशन में कॉपी-पेस्ट करने के लिए प्रदान कर सकते हैं, लेकिन यह अक्षम, त्रुटि-प्रवण और अपडेट करना मुश्किल है क्योंकि यह एप्लिकेशन-विशिष्ट कोड के साथ मिश्रित होता है।

असल में, यह सब अच्छा और अच्छा लगता है, लेकिन इसका मतलब यह है कि मैं एप्लिकेशन कंटेनर हर बार मैं कुछ बदलने को फिर से बनाने के लिए, भले ही वह केवल लिखने में कोई त्रुटि है है।

यह बहुत ही कुशल प्रतीत नहीं होता है, उदा। जब वेब अनुप्रयोग बनाते हैं जहां आप ब्राउज़र में कुछ बदलना, सहेजना और रीफ्रेश करना चाहते हैं।

आप इससे कैसे निपटते हैं?

उत्तर

69

मतलब है मैं एप्लिकेशन कंटेनर हर बार मैं कुछ बदलने फिर से बनाने के लिए है, भले ही वह केवल लिखने में कोई त्रुटि

है जरूरी नहीं कि, आप docker run आदेश के लिए -v विकल्प इस्तेमाल कर सकते हैं अपनी प्रोजेक्ट फ़ाइलों को एक कंटेनर में इंजेक्ट करें। तो आपको एक डॉकर छवि का पुनर्निर्माण नहीं करना पड़ेगा।

ध्यान दें कि ONBUILD निर्देश उन मामलों के लिए है जहां डॉकरफ़ाइल को FROM माता-पिता डॉकरफ़ाइल प्राप्त होता है। ONBUILD अभिभावक डॉकरफ़ाइल में पाए गए निर्देश तब चलेंगे जब डॉकर बच्चे डॉकरफ़ाइल की एक छवि बनाता है।


यह बहुत, कुशल उदा होना प्रतीत नहीं होता है जब वेब अनुप्रयोग बनाते हैं जहां आप ब्राउज़र में कुछ बदलना, सहेजना और रीफ्रेश करना चाहते हैं।

आप एक डोकर कंटेनर का उपयोग कर रहे हैं, तो जब तुम कि आवेदन कोड पर पुनरावृत्ति कर रहे हैं एक वेब अनुप्रयोग सेवा करने के लिए, तो मैं तुम्हें एक विशेष डोकर छवि है जो अपने ऐप्लिकेशन लेकिन एप्लिकेशन कोड को चलाने के लिए सब कुछ शामिल कर सुझाव देते हैं।

फिर उस निर्देशिका को साझा करें जिसमें आपकी मेजबान मशीन पर आपके ऐप कोड शामिल हैं, जिसमें डॉकर कंटेनर के भीतर एप्लिकेशन फ़ाइलों को सेवा दी जाती है।

docker run -d -p 80:80 -v /home/thomas/workspace/project1/:/usr/local/nginx/html:ro nginx 

इस तरह मैं /home/thomas/workspace/project1/ और में फ़ाइलों को बदल सकते हैं:

उदाहरण के लिए, अगर मैं एक स्थिर वेब साइट के विकास कर रहा हूँ और मेरे कार्यक्षेत्र /home/thomas/workspace/project1/ पर है, तो मैं के साथ एक कंटेनर चल nginx शुरू होगा परिवर्तन डॉकर छवि को पुनर्निर्माण किए बिना या डॉकर कंटेनर को पुनरारंभ किए बिना लाइव परिलक्षित होते हैं।

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