كيفية نشر تطبيق Express.js؟
يعد اختيار خيار النشر الصحيح أمرًا ضروريًا لضمان إمكانية توسيع نطاق تطبيقك بسهولة أثناء نموه. تستكشف هذه المقالة خيارات النشر المختلفة المتاحة لتطبيقات Express.js. ويركز بشكل خاص على كيفية نشر تطبيقات Express.js في حاوية Back4app.
Contents
- 1 ما هو Express.js؟
- 2 مزايا استخدام Express.js
- 3 عيوب Express.js
- 4 خيارات النشر Express.js
- 5 كيفية نشر تطبيق Express في حاوية Back4app
- 6 المتطلبات الأساسية
- 7 إنشاء واجهة برمجة تطبيقات Express بسيطة
- 8 إرساء التطبيق الExpress
- 9 نشر تطبيق Docker Express في حاوية Express إلى حاوية Back4app
- 10 كيفية تحسين صورة Docker
- 11 الخاتمة
- 12 الأسئلة الشائعة
- 13 ما هو Express.js؟
- 14 ما هي خيارات النشر لتطبيقات Express.js؟
- 15 كيف يتم نشر تطبيق Express.js إلى حاوية Back4app؟
ما هو Express.js؟
Express هو إطار عمل خفيف الوزن غير معقد مبني على Node.js يبسّط عملية بناء واجهات برمجة التطبيقات المعقدة على الويب والجوال.
يوفر نظام توجيه بسيط يساعدك على تحديد نقاط النهاية لمسارات واجهة برمجة التطبيقات بسهولة وتعيينها إلى دوال المعالج.
كما أنه يحتوي على دعم البرمجيات الوسيطة التي تسمح لك بإضافة وظائف مثل التسجيل والمصادقة ومعالجة الأخطاء في دورة الاستجابة للطلب.
مزايا استخدام Express.js
بعض مزايا استخدام Express هي:
- بسيط وسهل الاستخدام: يلخص Express.js تعقيد بعض ميزات Node.js مثل التوجيه. يوفر طريقة بسيطة للتعامل مع طلبات واستجابات واجهة برمجة التطبيقات.
- قابلة للتوسعة بشكل كبير: لدى Express.js مجتمع كبير ينتج عنه نظام بيئي واسع من حزم NPM والإضافات التي يمكنك دمجها بسهولة في التطبيقات.
- عالي الأداء: نظرًا لتصميمه البسيط والاستفادة من بنية Node غير المتوقفة والقائمة على الأحداث، فإن Express عالي الأداء.
- دعم مجتمعي قوي: كان Express.js موجودًا منذ عام 2010. وخلال هذا الوقت، اعتمده الكثير من المطورين. لذلك هناك بناء مجتمع كبير مع Express يمكن أن يساعدك إذا واجهتك مشكلة. علاوة على ذلك، هناك الكثير من المقالات والبرامج التعليمية والمستندات المكتوبة جيدًا التي تشرح كيفية عمل Express.
عيوب Express.js
فيما يلي بعض عيوب Express.js:
- غير متحيز للرأي: بالمقارنة مع أطر عمل مثل Nest.js، فإن Express.js غير متوافق مع الآراء. هذا الافتقار إلى الرأي يعني أنك بحاجة إلى اتخاذ قرارات حول بنية المشروع وتنظيمه والتي يمكن أن تكون مملة خاصة عندما يكون لديك طرق متعددة للقيام بالأشياء.
- يفتقر إلى الميزات المدمجة: لا يأتي Express.js مهيأً مسبقًا ولمعظم الميزات المتقدمة مثل التسجيل، تحتاج إلى تثبيت تبعيات إضافية.
خيارات النشر Express.js
البنية التحتية كخدمة (IaaS)
البنية التحتية كخدمة هي خدمة حوسبة سحابية توفر موارد الحوسبة والشبكة والتخزين عبر الإنترنت عند الطلب.
مع IaaS، تكون مسؤولاً عن توفير وتهيئة الموارد للتطبيق الخاص بك بينما يحتفظ موفر IaaS بالبنية التحتية المادية الأساسية. على سبيل المثال، إذا كنت ترغب في نشر تطبيق Express، يمكنك إنشاء وتهيئة جهاز افتراضي على موفر IaaS الذي تختاره.
على الآلة الافتراضية، تحتاج إلى تثبيت التبعيات الضرورية مثل Node و npm ثم إضافة كود Express إلى الآلة الافتراضية. يمكنك بعد ذلك بدء تشغيل تطبيق Express الخاص بك على الجهاز الافتراضي وسيكون متاحًا عبر الإنترنت.
تتمثل إحدى المزايا الرئيسية لخدمة IaaS في مستوى التحكم الذي توفره. يمكنك تخصيص وحدة المعالجة المركزية والذاكرة وموارد التخزين الخاصة بالآلة الافتراضية لتناسب احتياجات تطبيقك
ومع ذلك، من المهم مراعاة بعض الجوانب السلبية لهذا النهج.
يمكن أن تكون إدارة البنية الأساسية والموارد مع توسع تطبيقاتك وتغير الطلب معقدة وتستغرق وقتاً طويلاً.
تتضمن بعض موفري خدمات IaaS الشهيرة ما يلي:
- Microsoft Azure
- Amazon Web Services (AWS)
- Google Cloud Platform (GCP)
الحاوية كخدمة (CaaS)
الحاوية كخدمة (CaaS) هي وحدة خدمة سحابية تستخلص البنية التحتية الأساسية مما يتيح لك نشر التطبيقات المعبأة في حاويات وتشغيلها بسرعة.
لنشر تطبيق Express إلى مزود خدمة كخدمة كخدمة CaaS، تقوم بحزم الكود والتبعيات ووقت التشغيل اللازم لتشغيل التطبيق في حاوية باستخدام أداة لتكوين الحاويات مثل Docker. بمجرد إنشاء الحاوية، تقوم بنشرها. يقوم موفر CaaS بتوفير وإدارة البنية التحتية المطلوبة لتشغيل الحاوية نيابةً عنك.
تتمثل الفائدة الرئيسية لاستخدام CaaS في أن المستوى العالي من التجريد يبسّط عملية النشر لأنك لا تحتاج إلى القلق بشأن تكوين البنية التحتية منخفضة المستوى. يمكنك بدلاً من ذلك التركيز على بناء منطق التطبيق. بالإضافة إلى ذلك، يضمن استخدام الحاويات تشغيل تطبيقك بشكل متسق عبر بيئات متعددة.
تتضمن بعض موفري خدمات CaaS المشهورين ما يلي:
- Back4app Containers
- Amazon Elastic Container Service (ECS)
- Google Kubernetes Engine (GKE)
كيفية نشر تطبيق Express في حاوية Back4app
المتطلبات الأساسية
لمتابعة هذا البرنامج التعليمي، تأكد من أن لديك ما يلي:
- تم تثبيت Node.js على جهازك.
- حساب GitHub.
- Docker مثبتاً على جهازك. إذا لم تقم بذلك، قم بزيارة موقع Docker وقم بتثبيت سطح مكتب Docker.
- معرفة عملية بـ Express.js.
نظرة عامة على حاويات Back4app Containers
حاويات Back4app عبارة عن منصة تعمل على أتمتة النشر من خلال إدارة البنية التحتية من جانب الخادم نيابة عنك.
تتضمن بعض ميزات حاويات Back4app ما يلي:
- تكامل GitHub: يمكنك توصيل مستودعات GitHub بمستودعات GitHub الخاصة بك بـ Back4app لتمكين عمليات النشر التلقائي لتطبيقك عندما تتغير قاعدة التعليمات البرمجية.
- نشر Docker: يمكنك استخدام Docker، وهي أداة شائعة لتعبئة الحاويات، لتعبئة كود تطبيقك في حاوية. يضمن ذلك عمل تطبيقك بطريقة يمكن التنبؤ بها عبر البيئات.
- عمليات النشر التلقائي: بمجرد ربط مستودع GitHub بمستودع GitHub ب Back4app، فإن كل عملية دفع رمز إلى الفرع الافتراضي ستؤدي إلى النشر.
- تتبع النشر في الوقت الفعلي: يمكنك عرض حالة عمليات النشر والتقدم المحرز فيها.
- مراقبة التطبيق في الوقت الحقيقي
- تحديثات بدون تعطّل مطلقاً
مقدمة المشروع
في هذا الدليل، سنتعرف في هذا الدليل على عملية نشر تطبيق Express على Back4app. سننشئ أولاً واجهة برمجة تطبيقات Express REST API بسيطة مع نقطة نهاية واحدة، ونقوم بإرساءها باستخدام Docker ثم ندفعها إلى GitHub. سننشره بعد ذلك إلى حاوية Back4app.
إنشاء واجهة برمجة تطبيقات Express بسيطة
اتبع الخطوات التالية لإنشاء تطبيق Express:
- قم بتشغيل الأمر التالي في جهازك الطرفي لتهيئة مشروع Node.js جديد.
npm init
سيطالبك هذا الأمر بإدخال تفاصيل تطبيقك مثل اسم الحزمة والإصدار والوصف ونقطة الدخول والمؤلف والترخيص. بمجرد استجابتك، سينشئ الأمر ملف package.json بهذه التكوينات.
لاستخدام التكوينات الافتراضية، استخدم العلامة -y كما هو موضح أدناه:
npm init -y
- قم بتثبيت Express كتابع عن طريق تشغيل هذا الأمر.
npm install express
- في جذر مجلد المشروع الخاص بك، أنشئ ملف index.js. إذا حددت اسمًا آخر لملف نقطة الدخول، فاستخدمه.
- افتح ملف index.js وأنشئ مثيلًا لتطبيق Express.
const express = require('express');
const app = express();
- أضف معالج مسار لمعالجة طلبات GET إلى نقطة النهاية “/”.
app.get("/", (req, res) => {
res.json({
message: "Success",
});
});
ترسل نقطة النهاية هذه رسالة JSON كاستجابة.
- حدد رقم المنفذ واستمع للطلبات الواردة على المنفذ المحدد.
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`App listening at <http://localhost>:${port}`);
});
لاحظ أن process.env.PORT
يشير إلى متغير بيئة اسمه PORT. إذا لم يتم تعريف هذه القيمة في ملف .env، سيستخدم التطبيق القيمة 3000.
- قم بتشغيل الأمر التالي لبدء تشغيل خادم Express.
node index.js
إذا قمت بزيارة http://localhost:3000/api على متصفح الويب الخاص بك، يجب أن تتلقى الرد التالي.
{
"message": "Success!"
}
هذا مثال أساسي جدًا على واجهة برمجة التطبيقات Express، وسيكون التطبيق الحقيقي أكثر تعقيدًا مع المزيد من نقاط النهاية والبيانات الخارجية والبرامج الوسيطة وما إلى ذلك.
لأغراض هذه المقالة، هذا يكفي لتوضيح كيف يمكنك نشر تطبيق dockerized Express.
إرساء التطبيق الExpress
يشير Dockerizing تطبيق Express.js إلى إنشاء حاوية Docker له لتسهيل تشغيل التطبيق عبر بيئات مختلفة.
ما هو Docker؟
Docker هي أداة مفتوحة المصدر تتيح لك حزم تطبيقك ووقت تشغيله ومكتباته وتوابعه في بيئة حاوية معزولة ومحمولة.
من خلال تغليف التطبيق داخل هذه الحاوية، يوفر Docker بيئة متسقة لتشغيل التطبيق بغض النظر عن النظام المضيف الأساسي.
هذا يزيل مشكلة “إنه يعمل على جهازي”. يمكنك العمل على تطبيق Express الخاص بك في بيئتك المحلية، وتعبئته في حاويات، ونشره في بيئات متعددة دون القلق بشأن مشاكل التوافق.
تثبيت Docker
يمكن أن يعمل Docker على منصات متعددة بما في ذلك macOS وويندوز ولينكس. يمكنك تنزيل Docker وتثبيته لنظام التشغيل الخاص بك من الموقع الرسمي.
كيفية إرساء تطبيق Express.js في Dockerize
بمجرد تثبيت Docker، ستحتاج إلى تهيئة تطبيقك لرسو السفن، أي تحتاج إلى حزمه في حاوية Docker.
اتبع الخطوات التالية:
- في جذر مشروعك، قم بإنشاء ملف باسم
Dockerfile
. يحتوي هذا الملف على التعليمات الخاصة ببناء صورة Docker لتطبيق Express.
- عادة، عند إنشاء ملف Dockerfile، أول شيء تفعله هو تحديد صورة أساسية. الصورة الأساسية هي صورة مبنية مسبقًا تعمل كنقطة بداية لصورة التطبيق الخاص بك وعادةً ما تحتوي على الحد الأدنى من التعليمات لتشغيل التطبيق.
- في ملف Dockerfile، يمكنك بعد ذلك توفير الإرشادات والتكوينات التي ستعمل فوق هذه الصورة. يمكنك إنشاء الصورة الأساسية المخصصة الخاصة بك ولكن Docker لديه صور رسمية كافية في معظم الحالات.
- في هذا الدليل، سنستخدم في هذا الدليل صورة العقدة الأساسية وتحديدًا متغير جبال الألب وهو صغير الحجم. دعنا نحدد هذه الصورة الأساسية في ملف Dockerfile بإضافة ما يلي.
FROM node:20-alpine
هنا، يأتي node:20-alpine
مثبتًا مسبقًا مع Node.js الإصدار 20.
- أضف السطر التالي لتعيين دليل العمل داخل الحاوية.
WORKDIR /usr/src/app
- انسخ package.json و package-lock.json إلى دليل العمل. هذا يسرد جميع التبعيات التي يجب على Docker تثبيتها.
# A wildcard ensures package.json AND package-lock.json are copied
COPY package*.json ./
- أضف الأمر الخاص بتثبيت التبعيات.
RUN npm install
- انسخ بقية الشيفرة البرمجية إلى دليل العمل في الحاوية.
COPY . .
- اعرض رقم المنفذ الذي يستمع إليه تطبيق Express. في هذه الحالة، المنفذ 3000.
expose 3000
- أضف الأمر الخاص ببدء تشغيل التطبيق.
CMD["node", "index.js"]
إجمالاً، يجب أن يبدو ملف DockerFile الخاص بك هكذا:
FROM node:20-alpine
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "node", "index.js" ]
إضافة ملف .dockerignore
يحدد ملف .dockerignore الملفات التي يجب على Docker تجاهلها. يساعدك على تقليل حجم صورة Docker من خلال السماح لك بتجاهل الملفات غير الضرورية. كما يساعدك أيضًا على إخفاء الملفات الحساسة من الصورة.
لإضافته إلى مشروعك، قم بإنشاء ملف في قاعدة مشروعك وأطلق عليه اسم.dockerignore .
أضف المحتويات التالية إليه.
.git
.gitignore
.env
README.md
Dockerfile
node_modules/
.github
.vscode
npm-debug.log
npm-debug.log.*
يمنع الملف أعلاه نسخ ملفات git ووحدات العقدة والسجلات ومتغيرات البيئة إلى صورة Docker.
بناء صورة Docker محلياً
في دليل المشروع الخاص بك، قم بتشغيل الأمر التالي لبناء صورة Docker.
docker build -t docker-express-api .
تشير علامة -t
إلى علامة وتسمح لك بإعطاء صورة Docker اسمًا ذا معنى. تخبر النقطة (.) في النهاية Docker بالبحث عن Dockerfile في الدليل الحالي وتشغيل التعليمات الموجودة بداخله.
تشغيل صورة Docker محلياً
بمجرد إنشاء صورة Docker، استخدمها لتشغيل تطبيق Express باستخدام الأمر التالي:
docker run -p 3000:3000 docker-express-api
هنا -p 3000:3000
يعين المنفذ 3000 من المضيف المحلي إلى المنفذ 3000 في الحاوية. يجب أن تكون قادرًا على الوصول إلى التطبيق من خلال زيارة http://localhost:3000 في المتصفح.
لعرض مثيل Docker قيد التشغيل، استخدم الأمر التالي:
docker ps
لإيقاف المثيل، قم بتشغيل:
docker stop docker-express-api
نشر تطبيق Docker Express في حاوية Express إلى حاوية Back4app
الآن بعد أن تأكدنا من تشغيل صورة Docker محليًا، نحتاج إلى نشرها على Back4app.
دفع التطبيق الExpress إلى GitHub
يقوم Backapp بنشر تطبيقك من GitHub. لذلك، تحتاج إلى دفع مستودع التطبيق إلى GitHub باتباع الخطوات التالية:
- انتقل إلى موقع GitHub وقم بتسجيل الدخول إلى حسابك.
- بعد تسجيل الدخول، حدد رمز “+” في الزاوية العلوية اليمنى من الصفحة وانقر فوقه. من القائمة المنسدلة، اختر “مستودع جديد”.
- في صفحة “إنشاء مستودع جديد”، قم بتسمية مستودعك باسم. بالنسبة لهذا الدليل، سنستخدم “Express-api”. انقر على زر “إنشاء اسم مستودع”. تذكر عنوان URL للمستودع في الصفحة التالية لأنك ستحتاج إليه لدفع المستودع المحلي إلى GitHub.
على جهازك المحلي، انتقل إلى مجلد المشروع الخاص بك وقم بتشغيل الأمر التالي لدفع التطبيق إلى المستودع البعيد على GitHub.
git remote add origin <https://github.com/remigathoni/express-api.git>
git branch -M main
git push -u origin main
يجب أن تكون قادرًا على عرض ملفات تطبيقك في مستودع GitHub.
نشر التطبيق ال Express
اتبع الخطوات أدناه لنشر التطبيق على Back4app:
- انتقل إلى Back4app وقم بالتسجيل للحصول على حساب. إذا كان لديك حساب بالفعل، قم بتسجيل الدخول. سيقوم Back4app بإعادة توجيهك إلى لوحة التحكم بعد المصادقة.
- في لوحة التحكم، انقر على زر إنشاء تطبيق جديد. سيظهر لك خياران – الواجهة الخلفية كخدمة والحاوية كخدمة. يعتني الخيار BaaS بالواجهة الخلفية نيابةً عنك بينما يتيح لك الخيار CaaS نشر تطبيقك في بيئة حاوية. بالنظر إلى أننا نريد نشر التطبيق فقط، انقر على الحاويات كخدمة.
- عند المطالبة، امنح Back4app حق الوصول إلى حساب GitHub الخاص بك وحدد مستودع Express.
- قم بتسمية تطبيقك المنشور باسم. في هذا الدليل، نحن نستخدم “واجهة برمجة تطبيقات النشر الExpress”. يمكنك أيضًا تعيين خيارات النشر الإضافية مثل الفرع الافتراضي، والدليل الجذر، وحالة النشر التلقائي إما نعم أو لا، ومتغيرات البيئة.
- انقر على زر إنشاء تطبيق لإنهاء عملية النشر.
لقد قمت الآن بنشر تطبيق Express الخاص بك على Back4app مجاناً.
كيفية تحسين صورة Docker
من المهم تحسين حجم صورة docker للأسباب التالية:
- تحسين الأداء: لا تتضمن الصورة الصغيرة طبقات غير ضرورية تحتاج إلى التنفيذ. ينتج عن ذلك أوقات بدء تشغيل Express.
- نشر أسرع: يتم نشر الصور الأصغر حجماً بشكل أسرع.
- استهلاك أقل للموارد: تستهلك الصور الأصغر مساحة أقل على القرص والذاكرة عند التشغيل.
- أمان محسّن: من خلال استبعاد المكتبات والتبعيات غير الضرورية، تقلل الصور الأصغر حجمًا من سطح الهجوم على التطبيق.
لتحسين صورة Express.js Docker Docker، يمكننا استخدام بناء متعدد المراحل.
تسمح لك الإنشاءات متعددة المراحل بفصل بيئة الإنشاء عن بيئة وقت التشغيل. يمكنك إنشاء التطبيق في مرحلة الإنشاء ثم نسخ الملفات الضرورية فقط إلى مرحلة الإنتاج النهائية.
بالعودة إلى تطبيق Express، يمكننا تحديد مرحلتين – مرحلة الإنشاء حيث سنقوم بتثبيت التبعيات وصفحة الإنتاج حيث سننشئ صورة وقت التشغيل.
إنشاء مرحلة البناء
اتبع التعليمات أدناه لتحديد مرحلة الإنشاء:
- احذف جميع محتويات ملف Dockerfile وحدد مرحلة الإنشاء من الصورة الأساسية.
FROM node:20-alpine AS build
تتم تسمية المرحلة عن طريق إلحاق اسم المرحلة AS باسم المرحلة
بالتعليمات من. لاحظ أيضًا أن صور قاعدة جبال الألب أصغر بكثير من صور العقدة:.
- تحديد دليل العمل.
WORKDIR /usr/src/app
- انسخ ملفي package.json و package-lock.json إلى الحاوية.
COPY package*.json ./
- تثبيت تبعيات التطوير.
RUN npm install --only=development
- انسخ كود التطبيق إلى مرحلة الإنشاء.
COPY . .
- قم بتشغيل التطبيق.
CMD ["node", "index.js"]
يعتمد الأمر الذي تقوم بتشغيله هنا على مشروعك. على سبيل المثال، إذا كنت قد استخدمت TypeScript لإنشاء تطبيقك، فقد تحتاج إلى تحويل تطبيقك إلى ملف.
إنشاء مرحلة الإنتاج
في المرحلة الثانية، ستقوم بنسخ ملفات التطبيق المبنية فقط من مرحلة الإنشاء. اتبع الخطوات التالية:
- أضف صورة Node.js الأساسية وأطلق عليها اسم إنتاج.
# Production Stage
FROM node:20-alpine AS production
- تعيين دليل العمل.
WORKDIR /usr/src/app
- انسخ الملفات الضرورية من “مرحلة الإنشاء” عن طريق تحديد
-من=بناء
في تعليماتCOPY
. بما أنه لا يوجد أمر بناء، ننسخ كل شيء مباشرةً.
COPY --from=build /usr/src/app .
- اعرض المنفذ الذي يستمع إليه تطبيق Express الخاص بك.
EXPOSE 3000
- ابدأ تشغيل تطبيق Express.
CMD ["node", "index.js"]
بعد إنشاء ملف Dockerfile، ادفع تغييراتك إلى GitHub وسيقوم Back4app بإعادة نشر تطبيقك تلقائيًا.
إذا كنت ترغب في عرض الكود الخاص بهذه المقالة، راجع مستودع GitHub الخاص بالتطبيق.
الخاتمة
Express.js هو إطار عمل Node.js خفيف الوزن غير معتمد على نظام Node.js. وهو يساعد المطورين على بناء واجهات برمجة تطبيقات Express وبسيطة لتطبيقات الويب والجوال.
عندما يتعلق الأمر بنشر تطبيقات Express، لديك خيارات متنوعة بما في ذلك البنية التحتية كخدمة (IaaS) ومنصات الحاويات كخدمة (CaaS).
تُعد منصات IaaS مناسبة أكثر عندما تريد أقصى قدر من التحكم في البنية التحتية للخوادم الأساسية، حيث تُعد CaaS خيارًا جيدًا عندما تريد الانتقال من مرحلة التطوير إلى مرحلة الإنتاج بسرعة دون الحاجة إلى إدارة البنية التحتية يدويًا.
واحدة من أفضل مزودي خدمة CaaS هي حاويات Back4app. يقوم Back4app بإدارة ومراقبة نشر التطبيق بالنيابة عنك تاركاً لك التركيز على بناء ميزات التطبيق فعلياً.
في هذا الدليل، لقد تعلمت في هذا الدليل كيفية إرساء تطبيق Express.js ونشره في حاوية Back4app. لمعرفة المزيد، قم بزيارة وثائق حاويات Back4app.
الأسئلة الشائعة
ما هو Express.js؟
Express هو إطار عمل خفيف الوزن وغير متحيز مبني على Node.js يبسط عملية بناء واجهات برمجة التطبيقات المعقدة للويب والجوال.
ما هي خيارات النشر لتطبيقات Express.js؟
– IaaS (AWS, GCP, Azure)
– CaaS (Back4app Containers, AWS ECS, Google Kubernetes Engine (GKE))
كيف يتم نشر تطبيق Express.js إلى حاوية Back4app؟
قم بإنشاء تطبيق Express.js.
قم بتطبيق Docker على تطبيق Express.js.
قم بدفع التطبيق الذي تم Dockerize إلى GitHub.
أنشئ حساباً على Back4app.
أنشئ حاوية Back4app.
امنح Back4app الوصول إلى حساب GitHub الخاص بك.
حدد مستودع Express.js وقم بنشر تطبيقك.