मेरे पास एक डॉकर छवि है, चलो इसे कॉल करते हैं frontend.image, जो कि मैं जेनकिंस के गुलाम बनाने के लिए उपयोग करता हूं। जेनकिंस डॉकर प्लगइन इस छवि से एक कंटेनर को स्पिन करेगा और कंटेनर के अंदर कलाकृतियों का निर्माण करेगा। यह सब बहुत अच्छा काम करता है। इस मामले में, frontend.imageएक AngularJs ऐप बनाने के लिए उपयोग किया जाता है। इस एंगुलर ऐप को बनाने का एक हिस्सा एनपीएम पैकेज इंस्टॉल करना है, जिसके लिए ऐप की आवश्यकता होती है।
यह प्रक्रिया, npm स्थापित, एक लंबा समय लगता है, 3 मिनट ऐसा लगता है, npm हमेशा हर बार हर पैकेज को स्थापित करता है।
इसलिए मैंने अपने गुलाम के लिए एक वॉल्यूम जोड़ा, यह एक होस्ट माउंटेड वॉल्यूम है, डॉकर प्लगइन इस वॉल्यूम का उपयोग हर बार फ्रंटएंड कंटेनर को चलाने में करेगा:
कमांड निष्पादित करने वाला उपयोगकर्ता npm installहै jenkins। npm एक कैश रखता है जिसे आप कमांड के साथ पा सकते हैं npm config get cacheजो आउटपुट देता है/home/jenkins/.npm
यही कारण है कि मेरे पास होस्ट वॉल्यूम /slaves/volumes/tsl.frontend:/home/jenkinsमेरे वेब कंटेनर स्लेव के लिए है।
मैं जेनकिन्स परियोजना का उपयोग करके अपने कोणीय ऐप का निर्माण करता हूं, कोई समस्या नहीं बनाता है, कई एनपीएम पैकेज स्थापित होते हैं। अगर मेरे डॉकर होस्ट में ssh और cmd चलाते हैं तो ls /slaves/volumes/tsl.frontendमुझे बहुत सारे npm पैकेज मिलते हैं। इसका मतलब है कि गुलाम के लिए मेरा होस्ट वॉल्यूम माउंट है।

अब मैं जेनकिंस परियोजना का निर्माण फिर से करता हूं, एनपीएम हर एक पैकेज को फिर से स्थापित करता है, भले ही डॉकर दास बिल्ड कंटेनर वॉल्यूम होस्ट माउंट का उपयोग कर रहा हो। मैं भी cmd docker exec -it <some_clever_random_container_id> bashतो cmd के साथ दास कंटेनर में को कोसने से पुष्टि कर सकता हूँ su jenkinsतो cmd npm cache lsजो कई npm पैकेजों को सूचीबद्ध करता है जो कैश होते हैं।

इसलिए, मेरे होस्ट माउंट वॉल्यूम के साथ, जिसकी अनुमति अनुमतियाँ भी हैं chmod 777ताकि कोई समस्या न हो, मुझे npm installकैश का उपयोग करने की अनुमति नहीं मिल सकती है ।
मेरे जेनकींस बिल्ड में, जो डॉकर स्लेव कंटेनर में घूमता है, पहला सेमी मैं चलता हूं npm cache lsऔर कई पैकेज सूचीबद्ध हैं, इसका मतलब यह नहीं है कि मेरा होस्ट वॉल्यूम अपेक्षित रूप से काम कर रहा है और एनपीएम कैश इंडेक्स अखंडता उर्फ भ्रष्ट नहीं है?
मैंने नियमित npm installसीएमडी की कोशिश की है , जो, जब मैं अपने लोकलहोस्ट मशीन पर चलाता हूं, तो पहली बार सभी पैकेज स्थापित करता है और अगली बार लगभग कोई पैकेज नहीं। और यह भी npm कैश "हैक" npm --cache-min 9999999 install, इस एसओ उत्तर के साथ ही cmd से लिया गयाnpm --skip-installed --cache-min 9999999 install
एक संबंधित प्रश्न StackOverflow पर पोस्ट किया गया था।
npm cache lsऔर एक कच्चे ls ~/.npm/* -alजब निर्माण शुरू करने का निर्माण स्क्रिप्ट ही किसी अन्य निर्माण कदम से पहले में सिर्फ कंटेनर के राज्य सुनिश्चित करने के लिए।

