في هذه الوحدة، سيمكنك إنشاء صورة الحاوية لتطبيق node.js الموحَّد وإرسالها إلى Amazon Elastic Container Registry. بدء الإنشاء

نشر إلى amazon ecr

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

نظرة عامة على التصميم

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

التحكم بالتبعية والمسار المُحسّن
صورة حاوية Docker هو تسجيل في نقطة زمنية مُحدَّدة للتعليمات البرمجية للتطبيق وتبعياته. هذا يتيح لمُؤسسات الهندسة إنشاء مسار قياسي لدورة حياة التطبيق. على سبيل المثال:

  1. يقوم المطوّرون بإنشاء الحاوية وتشغيلها محليًا.
  2. يقوم خادم التكامل المتواصل بتشغيل الحاوية نفسها وإجراء اختبارات التكامل عليها للتأكد من تخطيها للتوقعات.
  3. يتم شحن الحاوية نفسها إلى بيئة تشغيل مرحلي حيث يمكن رصد سلوكياتها وقت التشغيل باستخدام اختبارات الحمل أو فحص ضمان الجودة اليدوي.
  4. يتم شحن الحاوية نفسها إلى الإنتاج.

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

الكثافة وكفاءة الموارد
تسهّل الحاويات تعزيز كفاءة الموارد عن طريق إتاحة إجراء عدة عمليات غير متجانسة على نظام واحد. تُعد كفاءة الموارد نتيجةً طبيعيةً لتقنيات العزل والتخصيص التي تستخدمها الحاويات. يمكن أن تقتصر الحاويات على استهلاك مقادير مُحدَّدة من وحدة المعالجة المركزية للمضيف وذاكرته. من خلال معرفة الموارد التي تتطلبها الحاوية والموارد المُتاحة من الخادم المضيف الأساسي، يمكنك تحديد الحجم الصحيح لموارد الحوسبة التي تستخدمها مع مضيفات أصغر أو زيادة كثافة العمليات التي يتم إجراؤها على مضيف كبير واحد، ممّا يؤدي إلى زيادة التوافر وتحسين استهلاك الموارد.

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

الوقت اللازم لاستكمال الوحدة: 20 دقيقةً

الخدمات المُستخدمة:


في الجزء الأول من هذا البرنامج التعليمي، سيمكنك إنشاء صورة حاوية Docker لتطبيق node.js الموحد وإرسالها إلى Amazon Elastic Container Registry (Amazon ECR). حدّد رقم كل خطوة للتوسع في القسم.

  • الخطوة 1. الحصول على الإعداد

    في الخطوات القليلة التالية، ستستخدم Docker وGithub و Amazon Elastic Container Service (Amazon ECS) وAmazon ECR لنشر التعليمات البرمجية في الحاويات. لاستكمال هذه الخطوات، تأكّد من امتلاكك الأدوات التالية.

    1. امتلاك حساب على AWS: إذا لم يكن لديك حساب على AWS بالفعل، يمكنك تسجيل الاشتراك من هنا. جميع التدريبات في هذا البرنامج التعليمي مُصمّمة ليتم تناولها ضمن AWS Free Tier.
      ⚐ ملاحظة: قد تتطلب بعض الخدمات التي ستستخدمها أن يكون حسابك نشطًا لأكثر من 12 ساعةً. في حال مواجهتك صعوبة في استخدام أي من الخدمات مع امتلاكك حساب جديد، يُرجى الانتظار لبضع ساعات وإعادة المحاولة.
    2. تثبيت Docker: ستستخدم Docker لإنشاء ملفات الصور التي سيتم تشغيلها في الحاويات. Docker هو مشروع مفتوح المصدر. يمكنك تنزيله لأي من نظامي التشغيل Mac أو Windows.
      بعد الانتهاء من تثبيت Docker، يمكنك التحقق من كونه قيد التشغيل من خلال إدخال Docker --version في الوحدة الطرفية. من المُفترض أن يظهر رقم الإصدار، على سبيل المثال: الإصدار 19.03.5 من Docker، إنشاء 633a0ea.
    3. تثبيت AWS CLI:
      • ستستخدم AWS Command Line Interface (AWS CLI) لإرسال الصور إلى Amazon ECR. يمكنك معرفة معلومات عن AWS CLI وتنزيله من هنا.
      • بعد الانتهاء من تثبيت AWS CLI، يمكنك التحقق من كونه قيد التشغيل من خلال إدخال aws --version في الوحدة الطرفية. من المُفترض أن يظهر رقم الإصدار، على سبيل المثال: aws-cli/1.16.217 Python/2.7.16 Darwin/18.7.0 botocore/1.12.207.
      • إذا سبق وأن قمت بتثبيت AWS CLI، فقم بتشغيل الأمر التالي في الوحدة الطرفية للتأكد من تحديثه إلى آخر إصدار: pip install awscli --upgrade --user
      • إذا لم يسبق لك استخدام AWS CLI من قبل، فعليك تكوين بيانات الاعتماد الخاصة بك.
    4. امتلاك محرر نصوص: إذا لم يكن لديك بالفعل محرّر نصوص لكتابة تعليمات البرمجة، فقم بتثبيته في بيئتك المحلية. Atom هو محرّر نصوص بسيط ومفتوح المصدر من GitHub الرائج بين المطوّرين.
  • الخطوة 2. تنزيل المشروع وفتحه

    تنزيل تعليمات البرمجة من GitHub: انتقل إلى https://github.com/awslabs/amazon-ecs-nodejs-microservices وحدّد استنساخ أو تنزيل لتنزيل مستودع GitHub في بيئتك المحلية. يمكنك أيضًا استخدام GitHub Desktop أو Git لاستنساخ المستودع.

    افتح ملفات المشروع: ابدأ تشغيل Atom، وحدّد إضافة مجلد المشروع، وحدّد المُجلد الذي حفظت فيه المستودع amazon-ecs-nodejs-microservices. ومن ثم، ستتم إضافة المشروع بأكمله إلى Atom ليتسنى لك العمل فيه بسهولة.

    في مجلد المشروع، سترى مجلدات البنية التحتية والخدمات. تحتفظ البنية التحتية بالتعليمات البرمجية لتكوين البنية التحتية لـ AWS CloudFormation والتي ستستخدمها في الخطوة التالية. تحتوي الخدمات على التعليمات البرمجية المكوِّنة لتطبيق node.js.

    احرص على مراجعة الملفات والتعرّف على مختلف جوانب التطبيق، بما فيها قاعدة البيانات db.json، والخادم server.js، وpackage.json، والتطبيق Dockerfile.

    مشروع الخدمات المُصغّرة
  • الخطوة 3. توفير مستودع

    إنشاء المستودع:

    • انتقل إلى وحدة تحكم Amazon ECR.
    • في صفحة المستودعات، حدّد إنشاء مستودع.
    • في صفحة إنشاء مستودع، أدخل الاسم التالي للمستودع الخاص بك: api.
      ⚐ ملاحظة: ضمن ثبات العلامة، اترك الإعدادات الافتراضية.
    • حدّد إنشاء مستودع.

    بعد إنشاء المستودع، تظهر رسالة تأكيد مع عنوان المستودع. يكون عنوان المستودع بالصيغة التالية: [account-ID].dkr.ecr.[region].amazonaws.com/[repo-name]. سيكون كل من [account-ID] و[region] و[repo-name] خاصًا بإعدادك.

    ⚐ ملاحظة: ستحتاج إلى عنوان المستودع على مدار هذا البرنامج التعليمي.

    إنشاء
  • الخطوة 4. إنشاء صورة Docker وإرسالها

    عليك الوصول إلى الوحدة الطرفية والانتقال إلى الدليل التالي: ~/amazon-ecs-nodejs-microservices/2-containerized/services/api.

    استخدم الوحدة الطرفية لمصادقة تسجيل الدخول إلى Docker:

    1. شغِّل الأمر $(aws ecr get-login --no-include-email --region [your-region]). استبدل [your-region]، مثلاً $(aws ecr get-login --no-include-email --region us-west-2). وإذا اقتضت الحاجة، فقم بتكوين بيانات اعتمادك.
      إذا نجحت المصادقة، فستظهر رسالة التأكيد: نجح تسجيل الدخول.
    2. لإنشاء الصورة، قم بتشغيل الأمر التالي في الوحدة الطرفية: docker build -t api .
      ⚐ ملاحظة: من الضروري وضع النقطة (.) بعد api.
    3. بعد استكمال الإنشاء، ضع علامةً على الصورة حتى يتسنى لك إرسالها إلى المستودع: docker tag api:latest [account-ID].dkr.ecr.[region].amazonaws.com/api:v1 
      ⚐ ملاحظة: استبدل العنصرين النائبين [account-ID] و[region] بالمعلومات الخاصة بك.
      ⚐ تلميح للمحترفين: تمثل :v1 إصدار إنشاء الصورة. في كل مرة تقوم فيها بإنشاء الصورة، عليك زيادة رقم الإصدار هذا. في حال استخدامك برنامج نصي، يمكنك استخدام رقم تلقائي، كطابع زمني لوضع علامة على الصورة. يُعد هذا أفضل إجراء يتيح لك العودة بسهولة إلى إنشاء سابق لصورة الحاوية في المُستقبل.
    4. أرسل الصورة إلى Amazon ECR من خلال تشغيل: docker push [account-id].dkr.ecr.[region].amazonaws.com/api:v1
      ⚐ ملاحظة: استبدل العنصرين النائبين [account-ID] و[region] بالمعلومات الخاصة بك.

    في حال انتقالك إلى مستودع Amazon ECR، سترى صورتك مميزةً بعلامة v1.

    علامة صورة Amazon ECR