ڈوکر پر پچھلے بلاگز میں ، آپ پڑھتے ہوں گے کہ ڈوکر کی تصاویر ، ڈاکر کنٹینرز کیا ہیں اور ان کی ضرورت کیا ہے۔ اگر آپ ان کے بارے میں نہیں پڑھتے ہیں ، تو میں آپ سے درخواست کرتا ہوں کہ پڑھیں ، ڈاکر کمپوز پر اس بلاگ کے ساتھ جاری رکھنے سے پہلے۔
ڈوکر کے ساتھ آنے والے امکانات کی کھوج کے بعد ، یقینا مزید جاننا بہت دلچسپ ہے۔ ہے نا؟ کم از کم میں تب ہی تھا جب میں ایک چیلنج میں ٹھوکر کھا۔
ڈوکر کمپوز کا تعارف
ایک ہی خدمت کی درخواست پر مشتمل کام میرے لئے آسان تھا۔ لیکن جب مجھے متعدد خدمات کو الگ الگ کنٹینر میں رکھنا پڑا ، تو میں ایک روڈ بلاک میں چلا گیا۔ میری ضرورت MEAN اسٹیک ایپلی کیشن کو مرتب کرنا اور میزبانی کرنا تھی۔
ہاں ، آپ نے اسے صحیح طور پر پڑھا ہے۔ اسٹیک کی ایک پوری ایپلی کیشن۔ شروع میں ، میں نے سوچا کہ یہ ممکن نہیں ہے۔ لیکن جب میں نے ڈوکر کمپوز کے بارے میں سنا ، مجھے معلوم تھا کہ میرے تمام مسائل حل ہوجائیں گے۔
ایم ای این اسٹیک ایپلی کیشن میں ہر ایک اسٹیک کے ل separate ڈکر کمپوز کو الگ الگ کنٹینر (اور ان کی میزبانی) بنانے کے لئے استعمال کیا جاسکتا ہے۔ MEAN مونگو ڈی بی ایکسپریس کونییئر اور نوڈ جے کے لئے مخفف ہے۔ میں اس بلاگ میں جو ڈیمو دکھاؤں گا وہ بھی اسی موضوع پر ہے۔
ڈوکر کمپوز کا استعمال کرکے ، ہم ان میں سے ہر ایک ٹکنالوجی کو ایک ہی میزبان پر الگ الگ کنٹینر میں میزبانی کرسکتے ہیں اور انہیں ایک دوسرے سے بات چیت کرنے کے ل. حاصل کرسکتے ہیں۔ ہر کنٹینر دوسرے کنٹینرز سے بات چیت کرنے کے لئے ایک بندرگاہ کو بے نقاب کرے گا۔
ان کنٹینرز کی مواصلات اور وقت کا انتظام ڈوکر کمپوز کے ذریعہ رکھا جائے گا۔
تو آپ پوچھ سکتے ہو کہ یہ پورا انفراسٹرکچر کیسے مرتب کیا جائے؟ ٹھیک ہے ، تب میں آپ کو ایک مزید مفصل وضاحت فراہم کرتا ہوں۔
گودی
ہم کسی بھی واحد درخواست کنٹینر کو ڈاک فائل لکھ کر کیسے گھماتے ہیں ، اسی طرح ، ہمیں واحد کنٹینر ایپلی کیشن کی تعمیر کے ل a ایک الگ ڈوکفائل لکھنا پڑے گا۔ مزید برآں ، ہمیں ایک ڈوکر کمپوز فائل بھی لکھنی ہوگی جو اصل کام کرے گی۔ ڈوکر کمپوز فائل مختلف کنٹینر بنانے کے ل the مختلف ڈوکفائلز پر عملدرآمد کرے گی اور ایک دوسرے کے ساتھ بات چیت کرنے دیتی ہے۔
ابتدائیوں کے لئے بہترین جاوا آئیڈیا
ہمارے معاملے میں ، ہمارے پاس اسٹیک کی ایک پوری ایپلی کیشن ہے جس میں مونگو ڈی بی ، ایکسپریس جے ایس ، کونیولر اور نوڈ جے ایس شامل ہیں۔ مونگو ڈی بی بیک اینڈ ڈیٹا بیس کا خیال رکھتا ہے ، نوڈ جے ایس اور ایکسپریس جے ایس سرور سائیڈ رینڈرینگ کے لئے ہیں ، اور اینگولر فرنٹ اینڈ کے لئے ہے۔
چونکہ یہاں تین اجزاء ہیں ، لہذا ہمیں ہر ایک اجزا کے ل contain کنٹینر سپن کرنا ہوگا۔ ہمیں کنٹینرز کو مندرجہ ذیل طریقے سے گھمانا ہے۔
- کنٹینر 1 - کونیی
- کنٹینر 2 - نوڈ جے ایس اور ایکسپریس جے ایس
- کنٹینر 3 - مونگو ڈی بی
ڈوکر کنٹینرز بنانا
وسطی ایپلی کیشن کو گود میں لانے کے لئے پہلے قدم کے طور پر ، چلیں کونیولر کے کنٹینر سے شروع کرتے ہوئے ہر ایک اجزاء کی تعمیر کے ل the ڈاک فائل لکھتے ہیں۔ اس ڈاکیفائل کو پروجیکٹ ڈائرکٹری میں ’پیکیج.جسن‘ فائل کے ساتھ موجود ہونا پڑے گا۔ ’پیکیج.جیسن‘ میں یہ تفصیلات موجود ہیں کہ کونییی ایپلیکیشن کی تعمیر کے لئے انحصار کے کس ورژن کو ’این پی ایم‘ کے ذریعے استعمال کرنے کی ضرورت ہے۔
1. فرنٹ اینڈ کے لئے ڈوکفائل
نوڈ سے: 6 RUN mkdir -p / usr / src / app WORKDIR / usr / src / app کاپی پیکیج۔ json / usr / src / app RUN npm cache صاف RUN npm انسٹال کاپی کریں۔ / usr / src / app 4200 CMD ایکسپوز کریں ['npm'، 'start']
ہمیشہ کی طرح ، ہمارا پہلا کمانڈ ایک بیس امیج کو کھینچنا ہے ، اور ہم ایک بیس ‘نوڈ: 6’ شبیہہ کھینچ رہے ہیں۔
اگلی دو کمانڈز انگولر کوڈز کو اسٹور کرنے اور اس کو کنٹینر کے اندر ورکنگ ڈائرکٹری بنانے کے لئے ڈوکر کنٹینر کے اندر ایک نئی ڈائریکٹری ‘/ usr / src / app’ بنانے کے بارے میں ہیں۔
اس کے بعد ہم اپنی پروجیکٹ ڈائرکٹری سے ’پیکیج.جےسن‘ فائل کو کنٹینر کے اندر کاپی کر رہے ہیں۔
اس کے بعد ہم ’این پی ایم کیشے کلین‘ کمانڈ چلاتے ہیں جو این ایم پی کیشے کو صاف کرتا ہے۔
اس کے بعد ، ہم ’این پی ایم انسٹال‘ کمانڈ چلاتے ہیں جو انگولر ایپ کی میزبانی کے لئے مطلوبہ بوائلر پلیٹوں کو ڈاؤن لوڈ کرنا شروع کردیتی ہے۔ یہ بوائیلر پلیٹوں کو ڈاؤن لوڈ کرنا شروع کرتا ہے جو انحصار کے ورژن پر مبنی ہے جو ‘package.json’ میں ہے۔
اگلی ‘رن’ کمانڈ چلانے کا مقصد پروجیکٹ ڈائرکٹری سے موجود تمام کوڈز ، فولڈروں کو کنٹینر کے اندر کاپی کرنا ہے۔
مذکورہ بالا کمانڈ کنٹینر سے بیک اینڈ سرور کے ساتھ بات چیت کرنے کے لئے پورٹ نمبر 4200 کو بے نقاب کرنے کو کہتا ہے تاکہ صارفین نے ویب UI کے ذریعہ فرنٹ اینڈ کلائنٹ تک رسائی حاصل کرنے والی درخواستوں کو بھیجیں۔
آخر میں آخری کمانڈ یہ ہے کہ ، ’’ NMP ‘‘ شروع کرنے کے لئے ’’ RUN ‘‘ کمانڈ ہے۔ اس سے ہماری انگوٹی ایپ بنانے کیلئے کوڈز پر عمل درآمد شروع ہوتا ہے۔
کونیی ایپ اب تیار ہے ، لیکن بیک اپ اینڈ سرور اور ڈیٹا بیس پر اس کی انحصار کی وجہ سے اس کی میزبانی مناسب طریقے سے نہیں کی جائے گی۔ تو آئیے ہم آگے چلیں اور بیک اینڈ سرور کو مرتب کرنے کے لئے ڈاک فائل لکھیں۔
2. بیک ڈنڈ کے لئے ڈوکفائل
یہاں تک کہ یہ گودی ایک پروجیکٹ ڈائرکٹری میں موجود ہوگی۔ اس ڈائرکٹری میں ایکسپریس سرور کی انحصار اور نوڈ جے ایس کی دیگر ضروریات کی وضاحت کے ل for ’پیکیج.جسن‘ فائل بھی ہوگی۔ لیکن سب سے اہم بات ، اس میں بیک اینڈ سرور کو سپورٹ کرنے کے لئے پروجیکٹ کوڈ ہے۔
نوڈ سے: 6 RUN mkdir -p / usr / src / app WORKDIR / usr / src / app کاپی پیکیج۔ json / usr / src / app RUN npm cache صاف RUN npm انسٹال کاپی کریں۔ / usr / src / app 3000 CMD ایکسپوز کریں ['npm'، 'start']
جیسا کہ آپ دیکھ سکتے ہیں ، دونوں گودیوں کے درمیان بہت سی مماثلتیں ہیں۔ ہم بیس امیج پرت کی طرح وہی ’نوڈ: 6‘ استعمال کرتے ہیں ، کنٹینر کے اندر ایک نئی ڈائرکٹری بناتے ہیں ، اسے ورکنگ ڈائرکٹری بناتے ہیں ، اور دوسروں کے درمیان ’این پی ایم انسٹال‘ کمانڈ چلاتے ہیں۔ لیکن فرق صرف یہ ہے کہ مواصلات کے ل exposed پورٹ نمبر بے نقاب ہے۔ اس معاملے میں ، پورٹ نمبر 3000 کی وضاحت کی گئی ہے۔ یہ وہ جگہ ہے جہاں سرور کی میزبانی کی جائے گی اور مؤکل سے درخواستیں ڈھونڈیں گے۔
3. ڈیٹا بیس
آپ شاید سوچ رہے ہوں گے کہ میں نے عنوان میں ’’ ڈاکیفائل فار ڈیٹا بیس ‘‘ کا ذکر کیوں نہیں کیا ہے۔ اس کی وجہ یہ ہے کہ ، ہمیں واقعتا make حسب ضرورت بنانے کی کوئی ضرورت نہیں ہے۔ ہم اپنے ڈیٹا کو اسٹور کرنے کے ل straight فوری طور پر ایک 'منگو ڈی بی' بیس امیج کھینچ سکتے ہیں اور صرف اس پورٹ نمبر کو بے نقاب کرسکتے ہیں جس تک اس تک رسائی حاصل ہوسکتی ہے۔
اب آپ کے ذہن پر سوال یہ ہوگا کہ میں یہ کہاں کروں گا؟ ٹھیک ہے ہم یہ کام ڈوکر کمپوز فائل میں کرسکتے ہیں۔
ڈوکر کمپوز فائل
ڈوکر کمپوز فائل ایک YAML فائل ہے جس میں ڈاکر ایپلی کیشن کو ترتیب دینے کے لئے خدمات ، نیٹ ورکس اور جلدوں کے بارے میں تفصیلات موجود ہیں۔
اپنے ڈوکر انجن کا ورژن ڈھونڈنے کے لئے نیچے والی کمانڈ چلائیں۔
docker -v
کمانڈ پر عمل درآمد آپ کے میزبان میں چلنے والا ورژن واپس کرے گا۔ اپنے میزبان میں ڈوکر انجن کے ورژن کی بنیاد پر ، ایک مناسب ورژن ڈوکر کمپوز ڈاؤن لوڈ کریں۔ آپ ڈاؤن لوڈ کرنے کے ل the ، مناسب ورژن تلاش کرسکتے ہیں ڈاکر کی سرکاری دستاویزات .
چونکہ میں ڈوکر انجن ورژن 17.05.0-ce چلا رہا ہوں ، اس لئے میں نے ڈوکر کمپوز ورژن 3 استعمال کیا ہے۔
ڈوکر کمپوز انسٹال کریں
کمپوز ڈاؤن لوڈ کرنے کے لئے ، ذیل میں موجود کمانڈز کا سیٹ چلا run۔
sudo curl -L https://github.com/docker/compose/relayss/download/1.16.1/docker-compose-`uname -s` -uname -m` -o / usr / مقامی / بن / ڈاکر- سوڈو chmod + x / usr / مقامی / بن / ڈوکر کمپوز تحریر کریں
نوٹ کریں کہ آپ کے چلائے جانے والے ڈوکر انجن کے ورژن کی بنیاد پر کمانڈ میں موجود ورژن نمبر تبدیل ہوجائے گا۔
ذیل میں کمانڈز ہیں جو میری ڈوکر کمپوز فائل کا حصہ ہیں۔
ورژن: '3.0' # ڈوکر کمپوز ورژن کی وضاحت کریں # چلانے والی خدمات / کنٹینرز کی خدمت کی وضاحت کریں: کونیی: # پہلی سروس بلڈ کا نام: کونیی ایپ # ڈاکفائل پورٹس کی ڈائرکٹری کی وضاحت کریں: - '4200: 4200' # پورٹ میپنگ ایکسپریس کی وضاحت کریں: # دوسری سروس بلڈ کا نام: ایکسپریس سرور # ڈوکفائل بندرگاہوں کی ڈائرکٹری کی وضاحت کریں: - '3000: 3000' # بندرگاہوں کی نقشہ سازی کرنے والے لنکس کو واضح کریں: - ڈیٹا بیس # اس سروس کو ڈیٹا بیس سروس ڈیٹا بیس سے جوڑیں: تیسری خدمت کی تصویر کا # نام: منگو # بندرگاہوں سے کنٹینر بنانے کے ل image تصویر کی وضاحت کریں: - '27017: 27017' # پورٹ فارورڈنگ کی وضاحت کریں
مجھے پوری یقین ہے کہ مذکورہ فائل میں موجود احکامات آپ کو کوئی معنی نہیں رکھتے ہیں۔ تو ، آئیے اس مسئلے کو حل کریں۔
کوڈ کی پہلی لائن میں ، میں نے ڈوکر کمپوز کے ورژن کی وضاحت کی ہے۔ اگر آپ چاہتے ہیں کہ کمپوز کسی غلطی کی اطلاع دیئے بغیر مناسب طریقے سے کام کرے تو یہ بہت اہم اقدام ہے۔ اپنے ڈاکر انجن کے ورژن کے مطابق ڈوکر کمپوز ورژن ڈاؤن لوڈ کرنا یقینی بنائیں۔
اس کے بعد ، میں نے کلیدی الفاظ ’خدمات‘ کا استعمال کرکے تین کنٹینرز کی تعریف کی۔ ان خدمات میں میرے اسٹیک ، فرنٹ اینڈ ، بیک اینڈ اور ڈیٹا بیس کے تین اجزاء کا حوالہ دیا جاتا ہے۔ لہذا اس معاملے میں ، میرے کنٹینرز کا نام میری خدمات کا نام ہوگا ، یعنی 'کونیی' ، 'ایکسپریس' اور 'ڈیٹا بیس'۔
کلیدی لفظ ‘تعمیر’ اس اشارے کے لئے استعمال ہوتا ہے کہ اس کنٹینر کو کتائی دینے کے لئے ڈاک فائل اس ڈائریکٹری میں موجود ہے۔ رکو ، کیا آپ الجھن میں ہیں؟
یہ آسان ہے. راستہ کو ‘build:’ کے بعد بتانے کی ضرورت ہے۔ ہمارے معاملے میں ، ‘کونیی ایپ’ اور ‘ایکسپریس سرور’ دو ڈائرکٹریوں کا راستہ ہے جہاں تک ڈائریکٹری سے ڈوکر کمپوز فائل موجود ہے۔ ہمارے ڈیٹا بیس کنٹینر کے ل I ، میں نے سیدھا کہا ہے کہ گودی کے راستے کی بجائے بیس ‘امیج: منگو’ استعمال کریں۔
جاوا سسٹم ایکسٹ (1)
ان میں سے ہر خدمات کے ل I ، میں نے بندرگاہ کے نمبر بھی بتائے ہیں جو دوسرے کنٹینرز (خدمات) سے درخواستیں وصول کرنے / بھیجنے کے لئے استعمال ہوسکتے ہیں۔ کونیی کی صورت میں 4200 ، ایکسپریس کی صورت میں 3000 اور منگو کی صورت میں 27017۔
مزید برآں ، ایکسپریس کنٹینر کا ڈیٹا بیس کنٹینر سے ایک 'لنک:' ہے ، جس سے یہ ظاہر ہوتا ہے کہ سرور کی طرف سے جو بھی ڈیٹا موصول ہوتا ہے اسے ڈیٹا بیس میں بھیجا جائے گا جہاں اسے اسٹور کیا جائے گا۔
اب آخر کار ، ہم ایک تحریر ترتیب دینے کے اختتام پر پہنچے ہیں۔ ڈوکر کمپوز شروع کرنے اور تینوں کنٹینرز کو تین خدمات کے ساتھ اسپن کرنے کے ل we ، ہمیں صرف ڈائرکٹری میں درج ذیل دو کمانڈز پر عملدرآمد کرنے کی ضرورت ہے جہاں ڈوکر کمپوز فائل (YAML فائل) موجود ہے۔
ڈوکر کمپوز ڈوکر کمپوز بنائیں
سروسز کی تعمیر / بحالی کے لئے ‘ڈوکر کمپوز بلڈ’ کمانڈ استعمال کیا جاتا ہے جبکہ ، کنٹینرز بنانے / شروع کرنے کے لئے ، ‘ڈاکر کمپوز اپ’ کمانڈ استعمال ہوتا ہے۔ آگے بڑھو! اپنے لئے آزمائیں۔
ذیل میں ڈوکر امیجز کی اسکرین شاٹس دی جارہی ہیں اور پھر اس پر عمل درآمد کیا جارہا ہے۔ آپ دیکھ سکتے ہیں کہ کونییی شبیہہ بنائی جارہی ہے اور پھر اسے نام سے ٹیگ کیا گیا ہے۔
نیز ایکسپریس کیلئے ایک تصویر بطور نام اور ٹیگ بطور ’ایکسپریس: تازہ ترین‘ بنی ہے۔
اب جب تصویر بنائی گئی ہے ، آئیے اسے چلانے کی کوشش کریں اور اس طرح اس عمل میں ایک کنٹینر گھما رہے ہیں۔ ذیل میں وہ اسکرین شاٹ ہے۔
ذیل میں اسکرین شاٹ ہے جس میں کہا گیا ہے کہ ‘ویب پیک: کامیابی سے مرتب کردہ’ جس کا مطلب ہے کہ تینوں خدمات کو کامیابی کے ساتھ ڈوکر نے کنٹینرائز کیا ہے۔
اب جب کہ کنٹینرز کی میزبانی کی گئی ہے ، آپ ان کی متعلقہ بندرگاہوں پر خدمات کو فعال دیکھ سکتے ہیں۔ MEAN ایپ کے GUI کے ساتھ تعامل کرنے کیلئے اپنے ویب براؤزر میں درج ذیل پورٹ نمبر ٹائپ کریں۔
لوکل ہوسٹ: 4200 - کونیی ایپ (سامنے والا آخر)
لوکل ہوسٹ: 3000 - ایکسپریس سرور اور نوڈ جے ایس (بیک اینڈ / سرور سائیڈ)
لوکل ہوسٹ: 27017 - مونگو ڈی بی (ڈیٹا بیس)
ابھی تک متاثر؟ رکو ، کیوں کہ ابھی تک ڈاکر نہیں ہوا ہے! ہم تعیناتیوں کی تعداد کو آسانی سے ماپنے / نیچے کرنے کے لئے 'ڈوکر کمپوز اسکیل = 'x'' کمانڈ استعمال کرسکتے ہیں۔ دوسرے الفاظ میں ، ہم اس خدمت کے ل that بہت سارے کنٹینر تیار کرسکتے ہیں۔ ذیل میں کسی خاص خدمت کو ’5‘ کنٹینر پر پیمانے کے لئے مکمل کمانڈ ہے۔
ڈوکر کمپوز اسکیل = 5
اس طرح کی آسانی سے خدمات کی پیمائش ، پیکیجنگ اور ان کو اس قدر قیمت پر مؤثر انداز میں مرتب کرنا وہی ہے جو ڈوکر کو تعیناتی کا ایک بہترین ٹول اور میرا ذاتی پسندیدہ بناتا ہے۔
اگر آپ کو ابھی بھی اس تصور پر شک ہے تو پھر آپ نیچے دی گئی ویڈیو دیکھ سکتے ہیں جہاں میں نے اسی تصور کو عملی طور پر بیان کیا ہے کہ ڈاکر کمپوز کو کیسے ترتیب دیا جائے۔
ڈوکر کمپوز | MEAN اسٹیک ایپلی کیشن پر مشتمل ہے ڈی اوپس ٹیوٹوریل
اب جب آپ نے ڈوکر کے بارے میں سیکھا ہے ، چیک کریں ایڈوریکا کے ذریعہ ، ایک قابل اعتماد آن لائن سیکھنے والی کمپنی جس کی دنیا بھر میں 250،000 سے زیادہ مطمئن سیکھنے والوں کے نیٹ ورک ہیں۔ یہ ایڈورکا ڈوکر سرٹیفیکیشن ٹریننگ کورس سیکھنے والوں کو ڈوکر پر عمل درآمد اور مہارت حاصل کرنے میں مہارت حاصل کرنے میں مدد کرتا ہے۔
ہمارے لئے ایک سوال ہے؟ برائے کرم اس کا تذکرہ سیکشن میں ذکر کریں اور ہم آپ کو واپس ملیں گے۔