আমার একটি ডকার ইমেজ আছে, আসুন এটি কল করুন frontend.image
, আমি জেনকিনস বিল্ড স্লেভের জন্য ব্যবহার করি। জেনকিনস ডকার প্লাগইনটি এই চিত্র থেকে একটি ধারক স্পিন করবে এবং ধারকটির ভিতরে শিল্পকর্ম তৈরি করবে। এই সব দুর্দান্ত কাজ করে। এই ক্ষেত্রে, frontend.image
একটি AngularJs অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়। এই কৌণিক অ্যাপ্লিকেশনটি তৈরির অংশটি হ'ল এনপিএম প্যাকেজ ইনস্টল করা।
এই প্রক্রিয়াটি, এনপিএম ইনস্টল, দীর্ঘ সময় লাগে বলে মনে হয়, 3 মিনিট মনে হয়, এনপিএম সর্বদা প্রতিটি প্যাকেজ ইনস্টল করে।
সুতরাং আমি আমার ক্রীতদাসের জন্য একটি ভলিউম যুক্ত করেছি, এটি একটি হোস্ট মাউন্ট করা ভলিউম, ডকার প্লাগইন এই ভলিউমটি যখনই সম্মুখভাগের ধারকটি চালায় তখন তা ব্যবহার করবে:
ব্যবহারকারী যে কমান্ডটি কার্যকর করে তা npm install
হ'ল jenkins
। এনপিএম একটি ক্যাশে রাখে যা আপনি npm config get cache
আউটপুট কমান্ড সহ সন্ধান করতে পারেন/home/jenkins/.npm
এজন্য আমার হোস্ট ভলিউমটি /slaves/volumes/tsl.frontend:/home/jenkins
আমার ওয়েব ধারক দাসে মাউন্ট করা আছে।
আমি জেনকিনস প্রকল্পটি ব্যবহার করে আমার অ্যাংুলার অ্যাপটি তৈরি করি, কোনও সমস্যা তৈরি করে না, অনেক এনপিএম প্যাকেজ ইনস্টল করা হয়। যদি আমার ডকার হোস্টে ssh করে এবং cmd চালায় ls /slaves/volumes/tsl.frontend
আমি প্রচুর এনপিএম প্যাকেজ দেখতে পাচ্ছি। এর অর্থ গোলামের জন্য আমার হোস্ট ভলিউম মাউন্টটি কাজ করেছে।
এখন আমি আবার জেনকিনস প্রকল্পটি তৈরি করি, এনপিএম আবার প্রতিটি একক প্যাকেজ ইনস্টল করে, যদিও ডকার স্লেভ বিল্ড কনটেইনারটি ভলিউম হোস্ট মাউন্ট ব্যবহার করছে। আমি এমনকি সঙ্গে cmd ক্রীতদাস ধারক মধ্যে bashing দ্বারা নিশ্চিত করতে পারেন 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 --cache-min 9999999 install
, এই এসও উত্তর থেকে নেওয়া এবং পাশাপাশি সেন্টিমিটারnpm --skip-installed --cache-min 9999999 install
স্ট্যাক ওভারফ্লোতে একটি সম্পর্কিত প্রশ্ন পোস্ট করা হয়েছিল।
npm cache ls
এবং একটি কাঁচা যুক্ত করতাম ls ~/.npm/* -al
কেবল বিল্ড স্টার্ট করার সময় ধারকটির অবস্থা নিশ্চিত করার জন্য of