قم بإرساء واجهة برمجة تطبيقات REST الخاصة بـ Node.js باستخدام تقنية حاويات Docker ، والتي تبسط عملية النشر والإدارة.

يمكن أن تكون عملية نشر التطبيقات وتشغيلها في بيئات مختلفة صعبة نظرًا لوجود عدد من العوامل التي يجب مراعاتها مثل إعداد متغيرات البيئة لتكوين التبعيات الضرورية والإصدارات المحددة لحزم البرامج المختلفة.

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

ما هو عامل الميناء؟

عامل ميناء هي عبارة عن نظام أساسي للتطوير يوفر الأدوات والبيئة لحزم التطبيقات كصور محمولة يمكن تشغيلها كمكونات قابلة للتنفيذ قائمة بذاتها في الحاويات.

تشكل هذه الحاويات رمز التطبيق والاعتماديات المطلوبة لتشغيل التطبيق بنجاح في بيئات وقت تشغيل مختلفة دون أي مشاكل.

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

قم بإنشاء Node.js REST API

instagram viewer

للبدء، إنشاء خادم ويب Node.js.

يمكنك العثور على رمز هذا التطبيق في ملف مستودع جيثب.

بعد ذلك ، قم بتثبيت الحزم المطلوبة لهذا المشروع.

npm تثبيت morgan pg knex

ال ص تُستخدم الحزمة لإنشاء اتصال بقاعدة بيانات PostgreSQL. كنكس، من ناحية أخرى ، يوفر واجهة برمجة تطبيقات بسيطة للتفاعل مع PostgreSQL - ستستخدمها لكتابة استعلامات SQL.

أخيرًا ، سوف تستخدم مورغان، وهو برنامج وسيط يقوم بتسجيل طلبات واستجابات HTTP على وحدة التحكم ، لتصحيح ومراقبة تطبيقك الذي يعمل في حاوية Docker.

أخيرًا ، افتح ملف index.js ملف ، وأضف الكود أدناه تنفذ واجهة برمجة تطبيقات REST بسيطة بثلاث طرق.

مقدار ثابت صريح = يتطلب("يعبر")
مقدار ثابت مورغان = يتطلب("مورغان")
مقدار ثابت التطبيق = صريح ()
مقدار ثابت ديسيبل = يتطلب("./db")
مقدار ثابت المنفذ = process.env. بورت || 5000

app.use (مورغان ("ديف"))
app.use (express.json ())
app.use (express.urlencoded ({ ممتد: حقيقي }))

app.get ('/'، (مطلوب ، الدقة) => إرسال الدقة ('مرحبا بالعالم!' ))

app.get ("/ المستخدمين", غير متزامن (مطلوب ، الدقة) => {
مقدار ثابت المستخدمون = انتظر حدد (). من ("المستخدمون")
res.json (المستخدمون)
})

app.post ("/ المستخدمين", غير متزامن (مطلوب ، الدقة) => {
مقدار ثابت المستخدم = انتظر ديسيبل ("المستخدمون").إدراج({ اسم: req.body.name}) العودة ('*')
res.json (مستخدم)
})

app.listen (PORT ، () => وحدة التحكم.سجل(`الخادم في PORT:{PORT} دولار`))

تكوين اتصال قاعدة البيانات

ستتفاعل واجهة برمجة تطبيقات REST مع مثيل Docker PostgreSQL ، ومع ذلك ، تحتاج أولاً إلى تكوين اتصال قاعدة البيانات في تطبيقك. في الدليل الجذر لمجلد مشروعك ، قم بإنشاء ملف db.js ملف وإضافة الرمز أدناه.

مقدار ثابت كنكس = يتطلب("knex")
وحدة.exports = knex ({
عميل: "postgres",
اتصال: {
يستضيف: "ديسيبل",
مستخدم: "testUser",
كلمة المرور: "mypassword123",
قاعدة البيانات: "testUser",

},
})

قم بإعداد ملفات migrate.js و seed.js

سيمكن هذان الملفان من إنشاء جدول في قاعدة البيانات وتعبئته ببيانات الاختبار عبر واجهة برمجة التطبيقات. انشاء مجلد جديد، نصوص، في الدليل الجذر لمشروعك وأضف ملفين: migrate.js و seed.js.

في ال migrate.js ملف ، أضف الكود أدناه:

مقدار ثابت ديسيبل = يتطلب("../db");
(غير متزامن () => {
يحاول {
انتظر db.schema.dropTableIf موجود ("المستخدمون")
انتظر مخطط ديسيبل.'عام').اصنع جدول("المستخدمون"، (جدول) => {
table.increments ()
table.string ('اسم')
})
وحدة التحكم.سجل("إنشاء جدول المستخدمين!")
process.exit (0)
} يمسك (يخطئ) {
وحدة التحكم.log (يخطئ)
process.exit (1)
}
})()

سيقوم هذا الرمز بإنشاء ملف المستخدمين جدول مع عمود معرف يتزايد تلقائيًا وملف اسم عمود في قاعدة البيانات.

بعد ذلك ، في seed.js ملف ، أضف الكود أدناه:

مقدار ثابت ديسيبل = يتطلب("../db");
(غير متزامن () => {
يحاول {
انتظر ديسيبل ("المستخدمون").إدراج({ اسم: "اختبار المستخدم 1" })
انتظر ديسيبل ("المستخدمون").إدراج({ اسم: "اختبار المستخدم 2" })
وحدة التحكم.سجل("أضيف المستخدمون الوهميون!")
process.exit (0)
} يمسك (يخطئ) {
وحدة التحكم.log (يخطئ)
process.exit (1)
}
})()

تنفذ هذه الشفرة وظيفة غير متزامنة من شأنها إدراج مستخدمين اثنين في قاعدة بيانات PostgreSQL.

أخيرًا ، أضف هذه الأوامر إلى ملف package.json ملف.

"نصوص": {
"يبدأ": "node index.js",
"يهاجر": "نصوص العقدة / migrate.js",
"بذرة": "نصوص العقدة / seed.js"

},

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

قم بإعداد Dockerfile

يحدد Dockerfile التعليمات المطلوبة بواسطة محرك Docker لإنشاء صورة Docker. في الدليل الجذر لمشروعك ، قم بإنشاء ملف جديد وقم بتسميته ، ملف Dockerfile. بعد ذلك ، أضف التعليمات التالية لإنشاء صورة Docker لتطبيق Node.js.

من العقدة:16.3.0-البين 3.13
عمل /app
ينسخ الحزمة * .json ./
يجري تثبيت npm
ينسخ. .
يفضح8000
CMD [ "العقدة", "index.js" ]

دعونا نقسمها:

  • من - تحدد هذه التعليمات الصورة الأساسية للتطبيق ، وهي صورة Node.js Alpine ، وهي نسخة خفيفة الوزن من صورة Node.js التي يمكن العثور عليها في سجل Docker.
  • عمل - مجموعات /app الدليل كدليل العمل.
  • ينسخ الحزمة * .json. / - يوجه Docker لنسخ جميع الملفات بتنسيق اسم الملف هذا من الدليل الحالي إلى ملف /app مجلد.
  • يجري - ينفذ ويبني الصورة.
  • ينسخ.. - نسخ ملفات المصدر إلى ملف /app مجلد.
  • يفضح - يوجه هذا Docker إلى عرض منفذ داخل الحاوية للبيئة الخارجية ، في هذه الحالة ، الجهاز المضيف.
  • CMD - يحدد الأمر الذي سيتم تنفيذه عند إنشاء حاوية Docker من الصورة.

قم بإنشاء ملف Docker Compose File

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

لهذا السبب ، تحتاج إلى تعريف وبناء صورة التطبيق ومثيل PostgreSQL باستخدام Docker Compose - أداة تسمح لك ببناء وإدارة عدة حاويات Docker.

ببساطة ، باستخدام Docker Compose ، يمكنك تحديد الخدمات التي يتكون منها تطبيقك كوحدة واحدة ، في هذه الحالة ، واجهة برمجة تطبيقات Node.js REST وقاعدة بيانات PostgreSQL.

قم بإنشاء ملف جديد ، عامل ميناء يؤلف iml، في الدليل الجذر وأضف الكود أدناه:

إصدار:'3.9'

خدمات:
الخادم:
يبني:.
الموانئ:
-'5000:5000'
يعتمد على:
-ديسيبل
ديسيبل:
صورة:"postgres"
الموانئ:
-'4321:5432'
بيئة:
POSTGRES_PASSWORD:"mypassword123"
POSTGRES_USER:"testUser"
أحجام:
-data: / var / lib / postgresql / data

أحجام:
بيانات:

سيقوم هذا الرمز بإنشاء وتشغيل حاويتين Docker. الحاوية الأولى ، الخادم، يستخدم Docker Compose ملف Dockerfile لإنشاء الصورة لهذه الحاوية.

كما تحدد أيضًا أن حاوية الخادم تعتمد على ملف ديسيبل حاوية. بمعنى ، الخادم يجب أن تبدأ الحاوية بعد ديسيبل حاوية للتواصل معها.

الحاوية الثانية هي حاوية قاعدة بيانات PostgreSQL. لست بحاجة إلى تحديد Dockerfile لهذه الحاوية حيث سيتم إنشاؤه من صورة PostgreSQL في سجل صور Docker.

بناء صور Docker

استخدم أمر Docker Compose لإنشاء الصور وبدء الحاوية.

عامل الميناء يؤلف د

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

اختبر واجهة برمجة تطبيقات REST

قم بتشغيل الأمر أدناه لاختبار REST API قيد التشغيل في حاوية Docker. يجب أن يُنشئ جدولًا في قاعدة بيانات PostgreSQL.

ترحيل docker exec docker_node-server-1 npm run

يجب أن ترى استجابة مماثلة.

مشاركة صور Docker

تتمثل الخطوة الأخيرة في دفع صورة Docker لتطبيق Node.js إلى Docker Hub. هذا مشابه لدفع مشاريعك إلى GitHub.

  • رئيس لأكثر من Docker Hub وقم بالتسجيل للحصول على حساب وتسجيل الدخول إلى لوحة تحكم المستخدم.
  • بعد ذلك ، انقر فوق قم بإنشاء مستودع. أدخل اسم المستودع الخاص بك وقم بتعيين إمكانية رؤيته لأي منهما عام أو خاص ثم انقر فوق يخلق.
  • لدفع صورة Docker لتطبيقك إلى Docker Hub ، تحتاج أولاً إلى تسجيل الدخول إلى حسابك عبر الجهاز الطرفي ثم تقديم اسم المستخدم وكلمة المرور الخاصين بك.
تسجيل دخول عامل ميناء
  • بعد ذلك ، قم بتحديث اسم صورة Docker الخاصة بك لمطابقة هذا التنسيق: /. قم بتشغيل الأمر أدناه لإجراء هذا التغيير:
 علامة عامل ميناء /
  • أخيرًا ، ادفع صورة Docker الخاصة بك.
 دفع عامل ميناء / 

استخدام Docker في التطوير

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