هيلو سڀ! هي اسان جي سيريز جي ٻي پوسٽ آهي جنهن ۾ اسين ڏيکاريون ٿا ته جديد ويب ايپليڪيشنن کي ڪيئن لڳايو وڃي Red Hat OpenShift تي.
پوئين پوسٽ ۾، اسان نئين S2I (ذريعو کان تصوير) بلڊر جي تصوير جي صلاحيتن تي ٿورڙو ڇڪايو، جيڪو OpenShift پليٽ فارم تي جديد ويب ايپليڪيشنن جي تعمير ۽ ترتيب ڏيڻ لاء ٺهيل آهي. پوءِ اسان هڪ ايپليڪيشن کي جلدي ترتيب ڏيڻ جي موضوع ۾ دلچسپي وٺندا هئاسين، ۽ اڄ اسان ڏسنداسين ته ڪيئن استعمال ڪجي S2I تصوير کي ”خالص“ بلڊر تصوير جي طور تي ۽ ان کي ملائي OpenShift اسيمبلين سان.
صاف بلڊر جي تصوير
جيئن اسان حصو XNUMX ۾ ذڪر ڪيو آهي، اڪثر جديد ويب ايپليڪيشنن ۾ هڪ نام نهاد تعميراتي اسٽيج هوندو آهي، جيڪو عام طور تي ڪم سرانجام ڏيندو آهي جهڙوڪ ڪوڊ ٽرانسپيليشن، گھڻن فائلن جي ڪنٽينشن، ۽ minification. انهن عملن جي نتيجي ۾ حاصل ڪيل فائلون - ۽ هي جامد HTML، JavaScript ۽ CSS - آئوٽ پٽ فولڊر ۾ محفوظ ٿيل آهن. هن فولڊر جو مقام عام طور تي منحصر هوندو آهي ته ڪهڙا اوزار استعمال ڪيا پيا وڃن، ۽ رد عمل لاءِ اهو هوندو ./build فولڊر (اسان هن ڏانهن واپس اچون ٿا وڌيڪ تفصيل سان هيٺ).
ماخذ کان تصوير (S2I)
هن پوسٽ ۾ اسان موضوع تي هٿ نه ٿا رکون "S2I ڇا آهي ۽ ان کي ڪيئن استعمال ڪجي" (توهان هن بابت وڌيڪ پڙهي سگهو ٿا هتي)، پر اھو ضروري آھي ته ھن عمل جي ٻن مرحلن بابت واضح ھجي سمجھڻ لاءِ ته ھڪڙي ويب ايپ بلڊر تصوير ڇا ڪري ٿي.
اسيمبليء جو مرحلو
اسيمبليءَ جو مرحلو فطرت ۾ بلڪل ساڳيو آهي ته ڇا ٿيندو جڏهن توهان ڊاڪر بلڊ هلائيندا آهيو ۽ نئين ڊاڪر تصوير سان ختم ڪندا آهيو. انهي جي مطابق، هي اسٽيج تڏهن ٿئي ٿو جڏهن OpenShift پليٽ فارم تي تعمير شروع ڪيو وڃي.
ويب ايپ بلڊر جي تصوير جي صورت ۾، اهو توهان جي ايپليڪيشن جي انحصار کي نصب ڪرڻ ۽ تعمير کي هلائڻ جو ذميوار آهي. اسڪرپٽ گڏ ڪرڻ. ڊفالٽ طور، بلڊر تصوير استعمال ڪري ٿو npm رن تعمير تعمير، پر اهو NPM_BUILD ماحول جي متغير ذريعي ختم ڪري سگهجي ٿو.
جيئن اسان اڳ ۾ چيو آهي، مڪمل ٿيل، اڳ ۾ ئي ٺهيل ايپليڪيشن جو مقام انحصار ڪري ٿو ته توهان ڪهڙا اوزار استعمال ڪندا آهيو. مثال طور، React جي صورت ۾ هي هوندو ./build فولڊر، ۽ Angular ايپليڪيشنن لاءِ اهو هوندو project_name/dist فولڊر. ۽، جيئن اڳئين پوسٽ ۾ ڏيکاريو ويو آھي، آئوٽ ڊاريڪٽري جو مقام، جيڪو ٺھيل آھي ڊفالٽ طور، OUTPUT_DIR ماحوليات جي متغير ذريعي ختم ڪري سگھجي ٿو. خير، جيئن ته آئوٽ پٽ فولڊر جو مقام فريم ورڪ کان فريم ورڪ کان مختلف آهي، توهان صرف ٺاهيل آئوٽ کي تصوير ۾ معياري فولڊر ڏانهن نقل ڪريو، يعني /opt/apt-root/output. ھي ھن مضمون جي باقي سمجھڻ لاءِ ضروري آھي، پر ھاڻي ھاڻي اچو ته جلد ئي ايندڙ اسٽيج تي نظر وجهون - رن مرحلو.
هلائڻ وارو مرحلو
اهو اسٽيج تڏهن ٿئي ٿو جڏهن ڊاڪر رن کي ڪال ڪيو وڃي ٿو نئين تصوير تي ٺهيل اسيمبلي اسٽيج دوران. ساڳيو ئي ٿئي ٿو جڏهن OpenShift پليٽ فارم تي ترتيب ڏيڻ. ڊفالٽ اسڪرپٽ هلائڻ استعمال ڪري ٿو خدمت ماڊل مٿين معياري آئوٽ ڊاريڪٽري ۾ واقع جامد مواد جي خدمت ڪرڻ لاء.
اهو طريقو جلدي ايپليڪيشنن کي ترتيب ڏيڻ لاء سٺو آهي، پر اهو عام طور تي جامد مواد کي هن طريقي سان پيش ڪرڻ جي سفارش ناهي. خير، حقيقت ۾ اسان صرف جامد مواد جي خدمت ڪندا آهيون، اسان کي اسان جي تصوير جي اندر نصب ٿيل Node.js جي ضرورت ناهي - هڪ ويب سرور ڪافي ٿيندو.
ٻين لفظن ۾، اسان کي گڏ ڪرڻ وقت هڪ شيء جي ضرورت آهي، جڏهن اسان کي هڪ ٻئي جي ضرورت آهي. هن صورتحال ۾، زنجير تعميرات هٿ ۾ اچن ٿيون.
"ٻه اسيمبليون گڏجي ڳنڍي سگھجن ٿيون، هڪ سان گڏ هڪ مرتب ٿيل ادارو ٺاهيندي ۽ ٻيو ان اداري کي هڪ الڳ تصوير ۾ ميزباني ڪري ٿو جيڪو ان اداري کي هلائڻ لاءِ استعمال ڪيو ويندو آهي."
ٻين لفظن ۾، اسان استعمال ڪري سگھون ٿا ويب ايپ بلڊر تصوير اسان جي تعمير کي هلائڻ لاءِ، ۽ پوءِ استعمال ڪري سگھون ٿا ويب سرور جي تصوير، ساڳي NGINX، اسان جي مواد جي خدمت ڪرڻ لاءِ.
ان ڪري، اسان ويب ايپ بلڊر جي تصوير کي ”خالص“ بلڊر جي طور تي استعمال ڪري سگھون ٿا ۽ ساڳئي وقت هڪ ننڍڙي رن ٽائم تصوير پڻ آهي.
هاڻي اچو ته ان کي هڪ خاص مثال سان ڏسو.
تربيت لاءِ اسان استعمال ڪنداسين سادي رد عمل جي درخواست, create-react-app ڪمانڊ لائن ٽول استعمال ڪندي ٺاهي وئي.
اچو ته هن فائل کي وڌيڪ تفصيل سان ڏسو، ۽ پيرا ميٽر سيڪشن سان شروع ڪريو.
parameters:
- name: SOURCE_REPOSITORY_URL
description: The source URL for the application
displayName: Source URL
required: true
- name: SOURCE_REPOSITORY_REF
description: The branch name for the application
displayName: Source Branch
value: master
required: true
- name: SOURCE_REPOSITORY_DIR
description: The location within the source repo of the application
displayName: Source Directory
value: .
required: true
- name: OUTPUT_DIR
description: The location of the compiled static files from your web apps builder
displayName: Output Directory
value: build
required: false
هتي هر شي بلڪل صاف آهي، پر اهو OUTPUT_DIR پيٽرول تي ڌيان ڏيڻ جي قابل آهي. اسان جي مثال ۾ React ايپليڪيشن لاءِ، پريشان ٿيڻ جي ڪا به ڳالهه ناهي، ڇو ته React ڊفالٽ ويل کي آئوٽ پٽ فولڊر طور استعمال ڪري ٿو، پر Angular يا ٻي ڪا شيءِ جي صورت ۾، هي پيٽرول ضروري طور تبديل ڪرڻو پوندو.
ٽين ۽ چوٿين تصويرن تي هڪ نظر وٺو. اهي ٻئي بيان ڪيا ويا آهن Docker تصويرون، ۽ توهان واضح طور تي ڏسي سگهو ٿا ته اهي ڪٿان اچن ٿا.
ٽئين تصوير ويب ايپ بلڊر آهي ۽ اها nodeshift/ubi8-s2i-web-app 10.x تي ٽيگ ٿيل آهي. ڊڪر جو مرڪز.
چوٿون هڪ NGINX تصوير آهي (ورجن 1.12) جديد ٽيگ سان ڊڪر جو مرڪز.
هاڻي اچو ته پهرين ٻن تصويرن کي ڏسو. اهي ٻئي شروع ۾ خالي آهن ۽ صرف تعمير جي مرحلي دوران ٺاهيا ويا آهن. پهرين تصوير، react-web-app-builder، هڪ اسيمبلي جي قدم جو نتيجو هوندو جيڪو ويب-ايپ-بلڊر-رن ٽائم تصوير ۽ اسان جو سورس ڪوڊ گڏ ڪندو. ان ڪري اسان هن تصوير جي نالي ۾ "-builder" شامل ڪيو.
ٻي تصوير - react-web-app-runtime - nginx-image-runtime ۽ react-web-app-builder تصوير مان ڪجھ فائلن کي گڏ ڪرڻ جو نتيجو ٿيندو. هي تصوير به ڊيپلائيمينٽ دوران استعمال ڪئي ويندي ۽ صرف ويب سرور ۽ جامد HTML، جاوا اسڪرپٽ، اسان جي ايپليڪيشن جي CSS تي مشتمل هوندي.
مونجهارو؟ هاڻي اچو ته هڪ نظر رکون تعميراتي ترتيبن تي ۽ اهو ٿورو واضح ٿي ويندو.
تنهن ڪري ٻئي تعمير جي جوڙجڪ react-web-app-runtime آهي، ۽ اهو شروع ٿئي ٿو خوبصورت معياري.
ليبل ٿيل 1 ليبل ڪا نئين شيء ناهي - اهو صرف چوي ٿو ته تعمير جو نتيجو رد عمل-ويب-ايپ-رن ٽائم تصوير ۾ رکيل آهي.
ليبل ٿيل 2 ليبل، جيئن پوئين ترتيب ۾، اشارو ڪري ٿو ته ذريعو ڪوڊ ڪٿان حاصل ڪجي. پر نوٽ ڪريو ته هتي اسان اهو چئي رهيا آهيون ته اهو تصوير مان ورتو ويو آهي. ان کان علاوه، تصوير مان جيڪا اسان صرف ٺاھيو آھي - react-web-app-builder کان (ليبل ٿيل 3 ۾ اشارو ڪيو ويو). اهي فائلون جن کي اسان استعمال ڪرڻ چاهيون ٿا اهي تصوير جي اندر آهن ۽ انهن جي جاءِ اتي مقرر ٿيل آهي 4 ليبل تي، اسان جي صورت ۾ اهو آهي /opt/app-root/output/. جيڪڏھن توھان کي ياد آھي، اھو اھو آھي جتي فائلون ٺاھيون ويون آھن جيڪي اسان جي ايپليڪيشن جي تعمير جي نتيجن تي ٻڌل آھن.
ليبل 5 سان اصطلاح ۾ بيان ڪيل منزل فولڊر صرف موجوده ڊاريڪٽري آهي (اهو سڀ ڪجهه آهي، ياد رکو، ڪنهن جادوگر شيءِ جي اندر هلندڙ آهي جنهن کي OpenShift سڏيو ويندو آهي، ۽ توهان جي مقامي ڪمپيوٽر تي نه).
حڪمت عملي سيڪشن - ليبل ٿيل 6 - پڻ پهرين تعمير جي ترتيب سان ملندڙ جلندڙ آهي. صرف هن وقت اسان استعمال ڪرڻ وارا آهيون nginx-image-runtime، جيڪو اسان اڳ ۾ ئي ڏٺو آهي تصويري اسٽريم سيڪشن ۾.
آخرڪار، 7 ليبل ٿيل لائن ٽرگرن جو ھڪڙو حصو آھي جيڪو چالو ڪندو ھن تعمير کي ھر دفعي رد عمل-ويب-ايپ-بلڊر تصوير تبديل ڪندو.
ٻي صورت ۾، هي ٽيمپليٽ خوبصورت معياري ترتيب واري ترتيب تي مشتمل آهي، انهي سان گڏ شيون جيڪي خدمتن ۽ رستن سان لاڳاپيل آهن، پر اسان ان جي تمام گهڻي تفصيل ۾ نه وينداسين. مهرباني ڪري نوٽ ڪريو ته اها تصوير جيڪا ترتيب ڏني ويندي اها آهي react-web-app-runtime تصوير.
ايپليڪيشن لڳائڻ
سو هاڻي ته اسان ٽيمپليٽ کي ڏٺو آهي، اچو ته ڏسون ته ان کي ڪيئن استعمال ڪجي ايپليڪيشن کي ترتيب ڏيڻ لاءِ.
اسان استعمال ڪري سگھون ٿا OpenShift ڪلائنٽ ٽول oc نالي اسان جي ٽيمپليٽ کي ترتيب ڏيڻ لاء:
هتي جو نمونو ساڳيو آهي، سواءِ OUTPUT_DIR متغير جي.
اضافي 2
هن آرٽيڪل ۾ اسان NGINX کي ويب سرور طور استعمال ڪيو، پر ان کي اپاچي سان تبديل ڪرڻ بلڪل آسان آهي، صرف فائل ۾ ٽيمپليٽ تبديل ڪريو. NGINX تصوير تي Apache تصوير.
ٿڪل
هن سيريز جي پهرين حصي ۾، اسان ڏيکاريو ته ڪيئن جلدي جديد ويب ايپليڪيشنن کي ترتيب ڏيو OpenShift پليٽ فارم تي. اڄ اسان ڏٺو ته هڪ ويب ايپ تصوير ڇا ڪري ٿي ۽ ڪيئن ان کي هڪ خالص ويب سرور سان گڏ ڪري سگهجي ٿو جهڙوڪ NGINX وڌيڪ پيداوار لاءِ تيار ٿيل ايپليڪيشن ٺاهڻ لاءِ زنجير ٺاهي استعمال ڪندي. هن سلسلي جي ايندڙ ۽ آخري مضمون ۾، اسين ڏيکارينداسين ته ڪيئن هلائجي ڊولپمينٽ سرور توهان جي ايپليڪيشن لاءِ OpenShift ۽ مقامي ۽ ريموٽ فائلن جي هم وقت سازي کي يقيني بڻائي.