تحجيم خدمة Node.js

التحجيم هو تجميع تطبيق وتبعياته ومكتباته معًا بحيث يمكن استخدامها كـ Plug-and-Play على أي نوع من البنية التحتية. يُطلق على كل حزمة اسم حاوية.

لماذا تحجيم خدمة Node.js؟

كما تم مناقشته في القسم السابق، فإن تحجيم خدمة Node.jsستعني تجميع التطبيق وتبعياته ومكتباته، وحتى التكوين في حاوية واحدة.التحجيمله فوائد التالية:

  1. محمولة.نظرًا لأننا قمنا بتجميع جميع متطلبات التطبيق في حاوية، يمكن تثبيت نفس الصور في التطوير والمرحلة التجريبية والإنتاج.
  2. سريعة وخفيفة الوزن.تكون الحاويات أسرع بكثير من الآلات الافتراضية (VMs) أو المعدن الخام حيث أنها تعمل فقط على متطلبات التطبيق، بينما تقوم التقنيات التقليدية بتشغيل الآلة بأكملها وجميع التطبيقات.
  3. مُتطور. مع المزايا المذكورتين أعلاه، يصبح التوسع سهلًا للغاية حيث تكون الحاويات سريعة وفعالة وسهلة التنفيذ.

في هذه المقالة، سنركز بشكل خاص على تحويل تطبيق Node.js إلى حاوية.

المتطلبات الأساسية

الأدوات والبرامج

دوكر (محرك دوكر وواجهة سطر الأوامر لدوكر)

سنحتاج إلى تثبيت دوكر لإدارة حاوياتنا. يتعامل محرك دوكر مع الوقت التشغيلي، ويمكن استخدام واجهة سطر الأوامر للتفاعل.

تثبيت Node.js و npm/yarn (للتطوير/الاختبار الأولي)

سنحتاج إلى تثبيت Node.js و npm لتثبيت تبعيات المكتبات وتشغيل الخدمة.

كوبرنيتيس أو دوكر كومبوز لإدارة عدة حاويات (اختياري)

سنحتاج إلى كوبرنيتيس أو دوكر كومبوز لإدارة عدة حاويات.

الأساسيات

هيكل تطبيق Node.js:

  • من المتوقعأن يكونالقارئ على دراية بالفعل بدور الملف الرئيسي (app.js أو index.js) في المشروع، إلى جانب دور الملفات الأخرى مثل package.json وyarn.lock.
  • لن يتطرق هذا المقال أيضًا إلى الجوانب الأخرى للمشروع، مثل وحدات التحكم، الوسائط، و المسارات.

أوامر Docker الأساسية وصياغة Dockerfile

أوامر Docker:

Shell

 

تعليمات Dockerfile الأساسية:

Shell

 

كلا الجدولين المذكورين وهيكل Node.js يكفيان للبدء في الحاويات ونشر خدمة Node.js الخاصة بك.

إعداد خدمة Node.js

إعداد بيئة Node.js عملية بسيطة. تأكد أنك قد قمت بتثبيت Node.js على جهازك. إذا كانت لديك أي شكوك، يرجى الرجوع إلى التذييل (1). بمجرد التثبيت، افتح الـ طرفية الخاصة بك وقم بالتحقق من التثبيت عن طريق كتابة.

Shell

 

أنشئ دليلًا للمشروع وقم بتهيئة الـ مشروعك على النحو التالي:

Shell

 

قم بتثبيت وحدة express

Shell

 

أنشئ ملف خادم، دعنا نسميه خادم.mjs, حيث يمكننا إضافة المسار والمنطق الذي يتوافق مع المسار.نظرًا لأن هذه المقالة تتعلق أكثر بالتحجيم، سنحتفظ بمنطق النقطة النهائية بشكل بسيط جدًا. شيء مثل هذا:

JavaScript

 

الآن خدمتك جاهزة للبدء، انتقل إلى دليل المشروع في الطرفية وقم بتشغيل هذا الأمر:

Shell

 

الخدمة قد تم تشغيلها؛ إذا زرنا http://localhost:3000، سنرى:

“مرحبًا بك في الخادم الخاص بي”

إنشاء ملف Dockerfile

لن نراجع ما هو ملف Dockerfile، إنه يحتوي على التعليمات لبناء صورة الدوكر. لنقم بإنشاء Dockerfile في الدليل الجذري. خلال هذه الخطوة، كما ناقشنا في تعليمات Dockerfile، نحتاج إلى القيام بالأمور التالية:

Plain Text

 

بناء وتشغيل صورة الدوكر

من جذر الطرفية، انتقل إلى مشروعك وقم بتشغيل الأمر التالي:

Shell

 

حيث يكون image-name اسم صورة Docker. النقطة . في النهاية تعيين السياق إلى الدليل الحالي.

بمجرد بناء الصورة، سنقوم بإنشاء الحاوية وتشغيل تطبيق Node.js باستخدام الأمر التالي:

Shell

 

بمجرد نجاح الخطوات السابقة، يمكنك التحقق من تشغيل الخدمة عن طريق تشغيل docker ps، ثم الانتقال إلى نفس عنوان URL المحلي كما كان مسبقاً.

رفع الصور إلى مستودع

الآن بعد أنصورتك جاهزة، حان الوقت لدفعها إلى سجل. لغرض هذه المقالة، دعنا ندفع فقط إلى Docker Hub. Docker Hub هو خدمة قائمة على السحابة لتخزين ومشاركة وإدارة صور حاويات Docker.

قم بإنشاء حساب على https://hub.docker.com/ وسجل الدخول باستخدام حسابك.

Shell

 

بمجرد تسجيل الدخول، يمكن إضافة الصور التي تم بناؤها محليًا كما يلي: مثل:

Shell

 

حيث:

  • tag هو إما latest أو رقم إصدار.
  • repository-name هو اسم المستودع المرغوب فيه.

بعد ذلك، ادفع الصورة كما يلي:

Shell

 

الخاتمة

كما نلاحظ، تجعل تقنية الحاويات سير العمل والخدمات المعقدة سريعة ومحمولة وقابلة للتوسيع من خلال فصل التبعيات. بمجرد تنفيذها، يستفيد الفريق بأكمله من ذلك.أشجعك على استكشاف الميزات المتقدمةمثل بناء متعدد المراحل وشبكات الحاويات. كما، يُنصح بالتعرف على أدوات التحكم (على سبيل المثال، Kubernetes) ودمج أنابيب CI/CD لتحسين سير العمل التطويري الخاص بك.

المرفق

  1. كيفية تثبيت Node و npm على جهازك

Source:
https://dzone.com/articles/containerization-of-a-nodejs-service