تشغيل حاوية مُخصصة في Azure

توفر Azure App Service مكدسات تطبيقات محددة مسبقاً على Windows مثل ASP.NET أو Node.js، تعمل على IIS. ومع ذلك، تقوم مكدسات التطبيقات التي تم تكوينها مسبقا بتأمين نظام التشغيل ومنع الوصول منخفض المستوى. لا تحتوي حاويات Windows المخصصة على هذه القيود، وتتيح للمطورين تخصيص الحاويات بالكامل ومنح التطبيقات المعبأة في حاويات وصولا كاملا إلى وظائف Windows.

توضح هذه البداية السريعة كيفية نشر تطبيق ASP.NET، في صورة Windows، إلى سجل حاويات Azure من Visual Studio. يُمكنك تشغيل التطبيق في حاوية مُخصصة في خدمة Azure App Service.

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

لإكمال هذا البرنامج التعليمي:

  • تثبيت Docker أو Windows.
  • قم بتبديل Docker لتشغيل حاويات Windows.
  • قم بتثبيت Visual Studio 2022 باستخدام أحمال عمل تطوير ASP.NET والويبوتطوير Azure. في مجتمع Visual Studio 2022، تأكد من تحديد مكون قوالب المشروع والعناصر .NET Framework مع ASP.NET وعبء عمل تطوير الويب. إذا قمت بتثبيت Visual Studio 2022 بالفعل:
    • ثبّت آخر التحديثات في Visual Studio بتحديد تعليمات>التحقق من وجود تحديثات.
    • أضِف أحمال العمل في Visual Studio من خلال تحديد "Tools">"Get Tools and Features" .

قم بإنشاء تطبيق ويب ASP.NET

قم بإنشاء تطبيق ويب ASP.NET من خلال اتباع الخطوات التالية:

  1. افتح Visual Studio، ثم حدد "Create a new project" .

  2. في إنشاء مشروع جديد، ابحث عن واختر ASP.NET Web Application (.NET Framework) للغة C#، ثم حدد التالي.

    Create a new project

  3. في تكوين مشروعك الجديد، تحت اسم Project، قم بتسمية التطبيق myfirstazurewebapp. ضمن إطار العمل، حدد .NET Framework 4.8 ثم حدد إنشاء.

    Configure your web app project

  4. يُمكنك نشر أي نوع من تطبيقات الويب ASP.NET إلى Azure. لهذا التشغيل السريع، اختر قالب MVC.

  5. ضمن المصادقة، حدد بلا. ضمن خيارات متقدمة، حدد دعم Docker وقم بإلغاء تحديد تكوين ل HTTPS. حدد Create.

    Create ASP.NET Web Application

  6. إذا لم يتم فتح ملف "Dockerfile" تلقائياً، افتحه من "Solution Explorer" .

  7. تحتاج إلى استخدام صورة أصل معتمدة. قم بتغيير الصورة الأصل عن طريق استبدال سطر FROM الذي يحتوي التعليمات البرمجية التالية واحفظ الملف:

    FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
    
  8. من قائمة Visual Studio، حدد تصحيح>بدء بدون تصحيح لتشغيل تطبيق الويب محلياً.

    Run app locally

نشر في Azure Container Registry

  1. في مستكشف الحلول، انقر بزر الماوس الأيمن فوق مشروع myfirstazurewebapp وحدد نشر.

  2. في الهدف، حدد تسجيل حاوية Docker، ثم حدد التالي.

    Select Docker Container Registry

  3. في هدف محدد، حدد سجل حاوية Azure، ثم حدد التالي.

    Publish from project overview page

  4. في نشر، تأكد من اختيار الاشتراك الصحيح. في سجلات الحاويات ، حدد الزر + لإنشاء سجل حاوية Azure جديد.

    Create new Azure Container Registry

  5. في إنشاء اشتراك جديد، تأكد من اختيار الاشتراك الصحيح. ضمن مجموعة الموارد، حدد جديد واكتب myResourceGroup للاسم، وحدد موافق. ضمن SKU، حدد أساسي. ضمن موقع التسجيل، حدد موقعا للسجل ثم حدد إنشاء.

    Azure Container Registry details

  6. في نشر، ضمن سجل الحاويات، حدد السجل الذي قمت بإنشائه، ثم حدد إنهاء.

    Select existing Azure Container Registry

    انتظر حتى يكتمل النشر. تعرض صفحة النشر الآن اسم المستودع. حدد زر النسخ لنسخ اسم المستودع لوقت لاحق.

    Screenshot that highlights the repository name.

إنشاء حاوية مخصصة Windows

  1. تسجيل الدخول إلى ⁧⁩مدخل Azure⁧⁩.

  2. اختر "Create a resource" من الزاوية العلوية اليسرى من مدخل Microsoft Azure.

  3. ضمن "Popular services" ، حدد "Create" ضمن "Web App" .

  4. في "Create Web App" ، اختر اشتراكك ومجموعة موارد. يُمكنك إنشاء مجموعة موارد جديدة إذا لزِم الأمر.

  5. قم بتوفير اسم تطبيق، مثل "win-container-demo" . اختر "Docker Container" في "Publish" و "Windows" في "Operating System" . حدد "Next: Docker" للمتابعة.

    Create a Web App for Containers

  6. بالنسبة إلى مصدر الصورة، اختر Docker Hub وبالنسبة للصورة والعلامة، أدخل اسم المستودع الذي نسخته في نشر إلى سجل حاوية Azure.

    Configure your a Web App for Containers

    إذا كانت لديك صورة مُخصصة في مكان آخر لتطبيق الويب الخاص بك، كما هو الحال في Azure Container Registry أو في أي مستودع خاص آخر، يُمكنك تكوينها هنا. حدد مراجعة + إنشاء للمتابعة.

  7. تحقق من كافة التفاصيل ثم حدد إنشاء وانتظر Azure لإنشاء الموارد المطلوبة. Create your a Web App for Containers

استعرض للوصول إلى الحاوية المخصصة

عند اكتمال عملية Azure، يتم عرض مربع إعلام.

Deployment succeeded

  1. انقر فوق ⁧⁩Go to resource⁧⁩.

  2. في النظرة العامة على هذا المورد، اتبع الارتباط الموجود بجوار URL.

تفتح صفحة مستعرض جديدة في الصفحة التالية:

Windows custom container starting

انتظر بضع دقائق وحاول مرة أخرى، حتى تُعرض الصفحة الرئيسية الافتراضية لـ ASP.NET:

Windows custom container running

تهانينا! تقوم بتشغيل حاوية Windows المُخصصة الأولى لك في خدمة Azure App Service.

مراجعة سجلات بدء تشغيل الحاوية

قد يستغرق تحميل حاوية Windows بعض الوقت. للاطلاع على التقدم، انتقل إلى عنوان URL التالي عن طريق استبدال <app_name> باسم تطبيقك.

https://<app_name>.scm.azurewebsites.net/api/logstream

تبدو السجلات المتدفقة كما يلي:

2018-07-27T12:03:11  Welcome, you are now connected to log-streaming service.
27/07/2018 12:04:10.978 INFO - Site: win-container-demo - Start container succeeded. Container: facbf6cb214de86e58557a6d073396f640bbe2fdec88f8368695c8d1331fc94b
27/07/2018 12:04:16.767 INFO - Site: win-container-demo - Container start complete
27/07/2018 12:05:05.017 INFO - Site: win-container-demo - Container start complete
27/07/2018 12:05:05.020 INFO - Site: win-container-demo - Container started successfully

التحديث محلياً وإعادة التوزيع

  1. في Visual Studio، في "Solution Explorer" ، افتح "Views">"Home">"Index.cshtm" .

  2. ابحث عن علامة <div class="jumbotron"> HTML بالقرب من الجزء العلوي، واستبدل العنصر بأكمله بالتعليمة البرمجية التالية:

    <div class="jumbotron">
        <h1>ASP.NET in Azure!</h1>
        <p class="lead">This is a simple app that we've built that demonstrates how to deploy a .NET app to Azure App Service.</p>
    </div>
    
  3. لإعادة النشر إلى Azure، انقر بزر الماوس الأيمن فوق مشروع myfirstazurewebapp في "Solution Explorer" واختر "Publish" .

  4. في صفحة النشر، حدد "Publish" وانتظر حتى يكتمل النشر.

  5. لإخبار خدمة App Service بسحب الصورة الجديدة من Docker Hub، أعِد تشغيل التطبيق. عند العودة إلى صفحة التطبيق في المدخل، انقر فوق "Restart">"Yes" .

    Restart web app in Azure

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

Updated web app in Azure

الخطوات التالية

أو، تحقق من الموارد الأخرى:

توفّر خدمة App Service على Linux مكدسات تطبيق مُحددة مسبقاً على Linux مع دعم للغات مثل .NET، وPHP، وNode.js وغيرها. يمكنك أيضا استخدام صورة Docker مخصصة لتشغيل تطبيق الويب الخاص بك على مكدس تطبيقات غير محدد بالفعل في Azure. يُوضّح هذا التشغيل السريع لك كيفية نشر إحدى الصور من خدمة Azure Container Registry (ACR) إلى خدمة App Service.

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

إنشاء سجل حاويات

يستخدم هذا التشغيل السريع Azure Container Registry كسجل الاختيار. لديك الحرية في استخدام السجلات الأخرى، إلا إن الخطوات قد تختلف قليلاً.

قم بإنشاء سجل الحاويات من خلال اتباع الإرشادات في التشغيل السريع: إنشاء سجل حاوية خاصة باستخدام مدخل Microsoft Azure.

هام

تأكّد من تعيين الخيار "Admin User" إلى "Enable" عند إنشائك Azure container registry. يُمكنك كذلك تعيينه من قسم "Access keys" في صفحة السجل الخاص بك في مدخل Microsoft Azure. هذا الإعداد مطلوب للوصول إلى خدمة App Service. للحصول على الهوية المدارة، راجع نشر من البرنامج التعليمي ACR.

تسجيل الدخول

  1. أطلِق Visual Studio Code.

  2. حدد شعار Azure في "Activity Bar"، وانتقل إلى مستكشف "APP SERVICE" ، ثم حدد "Sign in to Azure" واتبع الإرشادات.

    sign in to Azure

  3. في شريط الحالة في الجزء السفلي، تحقق من عنوان البريد الإلكتروني لحساب Azure الخاص بك. في مستكشف "APP SERVICE" ، يجب عرض اشتراكك.

  4. في شريط النشاط، حدد شعار "Docker" . في مستكشف "REGISTRIES" ، تحقق من ظهور سجل الحاوية الذي قمت بإنشائه.

    Screenshot shows the Registries value with Azure expanded.

التحقق من المتطلبات الأساسية

تحقق من تثبيت Docker وتشغيله. سيعرض الأمر التالي إصدار Docker إذا كان قيد التشغيل.

docker --version

إنشاء صورة وبنائها

  1. في Visual Studio Code، افتح مجلداً فارغاً وأضِف ملفاً يُسمَّى Dockerfile. في Dockerfile، قم بلصقه في المحتوى استناداً إلى إطار عمل اللغة المطلوب لديك:
FROM mcr.microsoft.com/appsvc/dotnetcore:lts

ENV PORT 8080
EXPOSE 8080

ENV ASPNETCORE_URLS "http://*:${PORT}"

ENTRYPOINT ["dotnet", "/defaulthome/hostingstart/hostingstart.dll"]

في Dockerfile هذا، تُعدّ الصورة الأصل واحدة من حاويات .NET المُضمَّنة في خدمة App Service. يُمكنك العثور على الملفات المصدر لذلك في مستودع GitHub Azure-App-Service/ImageBuilde، أدنى GenerateDockerFiles/dotnetcore. يقوم Dockerfile الخاص به بنسخ تطبيق .NET بسيط في /defaulthome/hostingstart. يبدأ Dockerfile الخاص بك بتشغيل هذا التطبيق ببساطة.

  1. افتح لوحة الأوامر، واكتب "Docker Images: Build Image" . اكتب "Enter" لتشغيل الأمر.

  2. في مربع "image tag"، حدد العلامة التي تريدها بالتنسيق التالي: <acr-name>.azurecr.io/<image-name>/<tag>، ويكون <acr-name> هو اسم سجل الحاوية الذي أنشأته. اضغط على إدخال.

  3. عند انتهاء الصورة من البناء، انقر فوق "Refresh" في الجزء العلوي من مستكشف "IMAGES" وتحقق من أن الصورة تم إنشاؤها بنجاح.

    Screenshot shows the built image with tag.

النشر إلى سجل الحاوية

  1. في شريط النشاط، انقر فوق رمز "Docker" . في مستكشف الصور ، ابحث عن الصورة التي قمت بإنشائها.

  2. قم بتوسيع الصورة، وانقر بزر الماوس الأيمن فوق العلامة التي تريدها، وانقر فوق "Push" .

  3. تأكّد من أن علامة الصورة تبدأ بـ <acr-name>.azurecr.io واضغط على "Enter" .

  4. عند انتهاء Visual Studio Code من دفع الصورة إلى تسجيل الحاوية الخاص بك، انقر فوق "Refresh" في الجزء العلوي من مستكشف "REGISTRIES" ، ثم تحقق من دفع الصورة بنجاح.

    Screenshot shows the image deployed to Azure container registry.

التوزيع إلى App Service

  1. في مستكشف السجلات، قم بتوسيع الصورة، وانقر بزر الماوس الأيمن فوق العلامة، وحدد نشر الصورة إلى Azure App Service.
  2. اتبع المطالبات لاختيار أحد الاشتراكات، واسم تطبيق فريد عالمياً، ومجموعة موارد وخطة لخدمة App Service. اختر "B1 Basic" لمستوى التسعير، ومنطقة ما قريبة منك.

بعد النشر، يتوفّر التطبيق الخاص بك في http://<app-name>.azurewebsites.net.

"Resource Group" هي مجموعة مُسمَّاة من كافة موارد التطبيق الخاصة بك في Azure. على سبيل المثال، يُمكن أن تحتوي مجموعة الموارد على أحد المراجع إلى موقع ويب، وقاعدة بيانات ووظيفة Azure.

تُحدد خطة App Service الموارد الفعلية التي سيتم استخدامها لاستضافة موقعك على الويب. يستخدم هذا التشغيل السريع خطة استضافة أساسية على البنية الأساسية لـ Linux ، مما يعني أنه ستتم استضافة الموقع على جهاز Linux إلى جانب مواقع ويب أخرى. إذا بدأت بالخطة الأساسية، يُمكنك استخدام مدخل Microsoft Azure لتوسيع نطاقه بحيث يكون موقعك هو الموقع الوحيد الذي يعمل على الجهاز. بالنسبة للتسعير، راجع تسعير خدمة App Service.

استعراض موقع الويب

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

الخطوات التالية

تهانينا، لقد أكملت هذا التشغيل السريع بنجاح.

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

ملحقات Azure الأخرى: