إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
توفر Azure App Service مكدسات تطبيقات محددة مسبقا، مثل ASP.NET أو Node.js، على Windows. تعمل مكدسات التطبيقات هذه على IIS. تعمل بيئة Windows المكونة مسبقاً على تأمين نظام التشغيل من:
- الوصول الإداري.
- إكمال عمليات تثبيت البرامج.
- تغييرات التي تطرأ على ذاكرة التخزين المؤقت للتجميع العمومي.
لمزيد من المعلومات، راجع وظائف نظام التشغيل على App Service.
يمكنك نشر صورة Windows مكونة خصوصاً من Visual Studio لإجراء تغييرات نظام التشغيل التي يحتاجها تطبيقك. يؤدي القيام بذلك إلى تسهيل ترحيل تطبيق محلي يتطلب تكوينا مخصصا لنظام التشغيل والبرامج. يوضح هذا البرنامج التعليمي كيفية ترحيل تطبيق ASP.NET الذي يستخدم خطوطا مخصصة مثبتة في مكتبة الخطوط Windows إلى App Service. يمكنك نشر صورة Windows مكونة خصيصا من Visual Studio إلى Azure Container Registry ثم تشغيلها في App Service.
المتطلبات الأساسية
- التسجيل للحصول على حساب Docker Hub.
- تثبيت Docker أو Windows.
- تكوين Docker لتشغيل حاويات Windows.
-
تثبيت Visual Studio 2022 باستخدام ASP.NET وتطوير الويب وأحجام عمل التطوير الخاصة بـ Azure. إذا كان لديك بالفعل Visual Studio 2022 مثبتا:
- ثبّت آخر التحديثات في Visual Studio بتحديد تعليمات>التحقق من وجود تحديثات.
- أضِف أحمال العمل في Visual Studio من خلال تحديد "Tools">"Get Tools and Features".
قم بإعداد التطبيق مَحَلِّيّاً
تنزيل العينة
في هذه الخطوة، يمكنك إعداد مشروع .NET المحلي.
- تحميل نموذج المشروع.
- استخلاص (فك ضغط) ملف custom-font-win-container-master.zip.
يحتوي نموذج المشروع على تطبيق ASP.NET بسيط يستخدم خطا مخصصا مثبتا في مكتبة خطوط Windows. ليس من الضروري تثبيت هذه الخطوط. ومع ذلك، فإن العينة هي مثال على تطبيق متكامل مع نظام التشغيل الأساسي. لترحيل مثل هذا التطبيق إلى App Service، يمكنك إما إعادة تكييف التعليمات البرمجية الخاصة بك لإزالة التكامل، أو ترحيلها كما هي في حاوية Windows مخصصة.
قم بتثبيت الأدوات
في مستكشف Windows، انتقل إلى custom-font-win-container-master/CustomFontSample، وانقر بزر الماوس الأيمن فوق FrederickatheGreat-Regular.ttf، وحدد تثبيت.
هذا الخط متاح للجمهور من خطوط Google.
تشغيل التطبيق
قم بفتح ملف custom-font-win-container/CustomFontSample.sln في Visual Studio.
حدد Ctrl+F5 لتشغيل التطبيق دون تصحيح الأخطاء. يتم عرض التطبيق في المستعرض الافتراضي الخاص بك.
نظرا لأن التطبيق يستخدم خطا مثبتا، لا يمكن تشغيل التطبيق في وضع الحماية ل App Service. ومع ذلك، يمكنك نشره باستخدام حاوية Windows بدلا من ذلك، لأنه يمكنك تثبيت الخط في حاوية Windows.
تكوين حاوية Windows
في Solution Explorer، انقر بزر الماوس الأيمن فوق مشروع CustomFontSample وحدد إضافة>Container Orchestration Support.
حدد إعداد Docker >موافق.
تم إعداد مشروعك الآن لتشغيله في حاوية Windows.
Dockerfile تتم إضافة إلى مشروع CustomFontSample، ويضاف مشروع docker-compose إلى الحل.
من مستكشف الحلول، افتح Dockerfile.
تحتاج إلى استخدام صورة أصل معتمدة. قم بتغيير الصورة الأصل عن طريق استبدال FROM السطر الذي يحتوي التعليمات البرمجية التالية:
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-ltsc2019
أضف السطر التالي إلى نهاية الملف واحفظ الملف:
RUN ${source:-obj/Docker/publish/InstallFont.ps1}
يمكنك العثور على InstallFont.ps1 في مشروع CustomFontSample. إنه برنامج نصي بسيط يقوم بتثبيت الخط. يمكنك العثور على إصدار أكثر تعقيدا من البرنامج النصي في معرض PowerShell.
إشعار
للقيام باختبار حاوية Windows محلياً، تأكد من بدء تشغيل Docker على الجهاز المحلي.
نشر في Azure Container Registry
يمكن Azure Container Registry تخزين الصور الخاصة بك لنشر حاوية. يمكنك تكوين App Service لاستخدام الصور المستضافة في Container Registry.
فتح نافذة النشر
في مستكشف الحلول، انقر بزر الماوس الأيمن فوق مشروع CustomFontSample وحدد نشر.
إنشاء السجل ونشره
في نافذة نشر ، حدد Azure، ثم حدد التالي.
حدد Azure Container Registry، ثم حدد التالي.
حدد الاشتراك حيث تريد نشر السجل، ثم حدد إنشاء جديد.
تسجيل الدخول باستخدام حساب Azure
في نافذة Azure Container Registry ، حدد إضافة حساب، ثم سجل الدخول إلى اشتراك Azure الخاص بك. إذا كنت قد سجلت الدخول بالفعل، فحدد الحساب الذي يحتوي على الاشتراك المطلوب من القائمة المنسدلة.
قم بتكوين التسجيل
قم بتكوين سجل الحاوية الجديد باستخدام القيم المقترحة في الجدول التالي كدليل. عند الانتهاء، حدّد «إنشاء».
| الإعدادات | القيمة المقترحة |
|---|---|
| بادئة DNS | قم بالاحتفاظ باسم التسجيل الذي تم إنشاؤه أو تغييره إلى اسم فريد آخر. |
| مجموعة الموارد | حدد جديد، وأدخل myResourceGroup، ثم حدد موافق. |
| SKU | رئيسي. لمزيد من المعلومات، راجع مستويات التسعير. |
| موقع التسجيل | غرب أوروبا |
حدد إنهاء.
تفتح نافذة طرفية وتعرض تقدم نشر الصورة. انتظر حتى يكتمل التوزيع.
تسجيل الدخول إلى Azure
قم بتسجيل الدخول إلى بوابة Azure.
أنشئ تطبيق ويب
حدد إنشاء مورد، ثم حدد إنشاء ضمن تطبيق الويب.
قم بتكوين أساسيات التطبيق
في علامة التبويب الأساسيات ، قم بتكوين الإعدادات باستخدام الجدول التالي كدليل.
| الإعدادات | القيمة المقترحة |
|---|---|
| الاشتراك | تأكد من تحديد الاشتراك الصحيح. |
| مجموعة الموارد | حدد إنشاء جديد، وأدخل myResourceGroup، ثم حدد موافق. |
| الاسم | أدخل اسمًا فريدًا. عنوان URL لتطبيق الويب هو https://<app-name>.azurewebsites.net، حيث <app-name> هو اسم التطبيق الخاص بك. |
| نشر | حاوية |
| نظام تشغيل | Windows |
| المنطقة | غرب أوروبا |
| خطة Windows | حدد إنشاء جديد، وأدخل myAppServicePlan، ثم حدد موافق. |
يجب أن تبدو علامة التبويب "الأساسيات " مشابهة لعلامة التبويب التالية:
تكوين حاوية Windows
في علامة التبويب الحاوية ، قم بتكوين حاوية Windows المخصصة كما هو موضح في الجدول التالي، ثم حدد مراجعة + إنشاء.
| الإعدادات | القيمة المقترحة |
|---|---|
| مصدر الصورة | سجل حاويات Azure |
| التسجيل | حدد التسجيل الذي أنشأته سابقا. |
| الصورة | customfontsample |
| العلامات | الأحدث |
إنشاء التطبيق بالكامل
حدد Create وانتظر Azure لتقوم بإنشاء الموارد المطلوبة منك.
استعرض التطبيق
عند اكتمال النشر، تظهر رسالة إعلام:
حدد الانتقال إلى المورد.
في صفحة التطبيق، حدد الرابط الموجود أسفل URL.
يتم فتح صفحة مستعرض جديدة إلى الصفحة التالية:
انتظر بضع دقائق وحاول مرة أخرى، حتى تحصل على الصفحة الرئيسية بالخط الذي تتوقعه:
تهانينا! لقد قمت بترحيل تطبيق ASP.NET إلى App Service في حاوية Windows.
عرض سجلات بدء تشغيل الحاوية
قد يستغرق تحميل حاوية Windows القليل من الوقت. للاطلاع على التقدم، انتقل إلى عنوان URL التالي. (استبدل <اسم> التطبيق باسم التطبيق.)
https://<app-name>.scm.azurewebsites.net/api/logstream
تبدو السجلات المتدفقة كما يلي:
14/09/2018 23:16:19.889 INFO - Site: fonts-win-container - Creating container for image: customfontsample20180914115836.azurecr.io/customfontsample:latest.
14/09/2018 23:16:19.928 INFO - Site: fonts-win-container - Create container for image: customfontsample20180914115836.azurecr.io/customfontsample:latest succeeded. Container Id 329ecfedbe370f1d99857da7352a7633366b878607994ff1334461e44e6f5418
14/09/2018 23:17:23.405 INFO - Site: fonts-win-container - Start container succeeded. Container: 329ecfedbe370f1d99857da7352a7633366b878607994ff1334461e44e6f5418
14/09/2018 23:17:28.637 INFO - Site: fonts-win-container - Container ready
14/09/2018 23:17:28.637 INFO - Site: fonts-win-container - Configuring container
14/09/2018 23:18:03.823 INFO - Site: fonts-win-container - Container ready
14/09/2018 23:18:03.823 INFO - Site: fonts-win-container - Container start-up and configuration completed successfully
تستخدم Azure App Service تقنية حاوية Docker لاستضافة كل من الصور المضمنة والصور المخصصة. لمشاهدة قائمة بالصور المضمنة، قم بتشغيل الأمر Azure CLI، az webapp list-runtimes --os linux. إذا كانت هذه الصور لا تلبي احتياجاتك، يمكنك إنشاء ونشر صورة مخصصة.
إشعار
يجب أن تستهدف الحاوية بنية x86-64. ARM64 غير مدعوم.
في هذا البرنامج التعليمي، تتعلم كيفية:
- ادفع صورة Docker مخصصة إلى Azure Container Registry.
- نشر الصورة المخصصة إلى App Service.
- تكوين متغيرات البيئة.
- اسحب الصورة إلى App Service باستخدام هوية مدارة.
- الوصول إلى سجلات التشخيص.
- قم بتمكين CI/CD من سجل الحاويات إلى App Service.
- الاتصال بالحاوية باستخدام SSH.
يتطلب إكمال هذا البرنامج التعليمي رسوما صغيرة في حساب Azure الخاص بك لسجل الحاوية ويمكن أن يتحمل المزيد من التكاليف إذا كنت تستضيف الحاوية لمدة أطول من شهر.
قم بإعداد بيئتك الأولية
يتطلب هذا البرنامج التعليمي الإصدار 2.0.80 أو الأحدث من CLI Azure. إذا كنت تستخدم Azure Cloud Shell، فإن أحدث إصدار مثبت بالفعل.
- تأكد من أن لديك حساب Azure باشتراك نشط. أنشئ حساباً مجاناً.
استخدم بيئة Bash في Azure Cloud Shell. لمزيد من المعلومات، راجع بدء استخدام Azure Cloud Shell.
إذا كنت تفضل تشغيل أوامر مرجع CLI محلياً قم بتثبيت CLI Azure. إذا كنت تعمل على نظام تشغيل Windows أو macOS، ففكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.
إذا كنت تستخدم تثبيت محلي، يُرجى تسجيل الدخول إلى Azure CLI مستخدمًا أمر az login. لإنهاء عملية المصادقة، اتبع الخطوات المعروضة في جهازك. للحصول على خيارات تسجيل الدخول الأخرى، راجع المصادقة على Azure باستخدام Azure CLI.
عندما يُطلب منك، قم بتثبيت ملحق Azure CLI عند الاستخدام لأول مرة. لمزيد من المعلومات حول الملحقات، راجع استخدام الملحقات وإدارتها باستخدام Azure CLI.
يُرجى تشغيل إصدار az للوصول إلى الإصدار والمكتبات التابعة التي تم تثبيتها. للتحديث لآخر إصدار، يُرجى تشغيل تحديث az.
- تثبيت Docker، والتي تستخدمها لبناء صور Docker. قد يتطلب منك تثبيت Docker إعادة تشغيل جهاز كمبيوتر.
بعد تثبيت Docker أو تشغيل Azure Cloud Shell، افتح نافذة طرفية وتحقق من تثبيت docker:
docker --version
نسخ أو تنزيل عينة التطبيق
يمكنك الحصول على عينة لهذا البرنامج التعليمي عبر استنساخ Git أو تنزيله.
استنساخ الريبو باستخدام Git Bash
نسخ مستودع العينة:
git clone https://github.com/Azure-Samples/docker-django-webapp-linux.git --config core.autocrlf=input
تأكد من تضمين الوسيطة --config core.autocrlf=input لضمان نهايات الأسطر المناسبة في الملفات المستخدمة داخل حاوية Linux.
ثم انتقل إلى المجلد:
cd docker-django-webapp-linux
قم بتنزيل ZIP من GitHub
بدلا من استخدام استنساخ Git ، يمكنك الانتقال إلى https://github.com/Azure-Samples/docker-django-webapp-linuxوتحديد Code>Local>Download ZIP.
فك ملف ZIP في مجلد اسمه docker-django-webapp-linux.
ثم افتح نافذة طرفية في مجلد docker-django-webapp-linux .
(اختياري) فحص ملف Docker
فيما يلي الملف الموجود في العينة المسمى Dockerfile. يصف صورة Docker ويحتوي على إرشادات التكوين.
FROM tiangolo/uwsgi-nginx-flask:python3.6
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt --no-cache-dir
ADD . /code/
# ssh
ENV SSH_PASSWD "root:Docker!"
RUN apt-get update \
&& apt-get install -y --no-install-recommends dialog \
&& apt-get update \
&& apt-get install -y --no-install-recommends openssh-server \
&& echo "$SSH_PASSWD" | chpasswd
COPY sshd_config /etc/ssh/
COPY init.sh /usr/local/bin/
RUN chmod u+x /usr/local/bin/init.sh
EXPOSE 8000 2222
#CMD ["python", "/code/manage.py", "runserver", "0.0.0.0:8000"]
ENTRYPOINT ["init.sh"]
- تقوم المجموعة الأولى من الأوامر بتثبيت متطلبات التطبيق في البيئة.
- تقوم المجموعة الثانية من الأوامر بإنشاء خادم SSH لتوفير اتصال أمان محسن بين الحاوية والمضيف.
- السطر الأخير،
ENTRYPOINT ["init.sh"]، استدعاء لبدء تشغيل خدمةinit.shSSH وخادم Python.
إنشاء الصورة واختبارها محليا
إشعار
يفرض Docker Hub حصصا على عدد عمليات السحب المجهولة لكل IP وعدد عمليات السحب المصادق عليها لكل مستخدم مجاني. إذا لاحظت أن عمليات السحب الخاصة بك من Docker Hub محدودة، فحاول الجري docker login إذا لم تكن قد قمت بتسجيل الدخول بالفعل.
قم بتشغيل الأمر التالي لإنشاء صورة:
docker build --tag appsvc-tutorial-custom-image .اختبر أن البناء يعمل عن طريق تشغيل حاوية Docker محليا:
docker run -it -p 8000:8000 appsvc-tutorial-custom-imageيحدد هذا
docker runالأمر المنفذ باستخدام الوسيطة-pويتضمن اسم الصورة.-itيتيح لك إيقافه باستخدام Ctrl+C.تلميح
إذا كنت تعمل على Windows ورأيت الخطأ *standard_init_linux.go:211: تسببت عملية المستخدم التنفيذي في "عدم وجود مثل هذا الملف أو الدليل"، فإن الملف init.sh يحتوي على نهايات أسطر CRLF بدلا من نهايات LF المتوقعة. يحدث هذا الخطأ إذا استخدمت Git لاستنساخ مستودع العينة ولكنك حذفت المعلمة
--config core.autocrlf=input. في هذه الحالة، انسخ المستودع مرة أخرى باستخدام الوسيطة--config. قد تشاهد الخطأ أيضا إذا قمت بتحرير init.sh وحفظته مع نهايات CRLF. في هذه الحالة، قم بحفظ الملف مرة أخرى مع نهايات LF فقط.استعرض للتحقق
http://localhost:8000من أن تطبيق الويب والحاوية يعملان بشكل صحيح.
إنشاء هوية مُدارة يعينها المستخدم
يمكن لخدمة التطبيقات استخدام هوية مدارة افتراضية أو هوية مدارة معينة من قبل المستخدم للمصادقة مع سجل حاوية. في هذا البرنامج التعليمي، ستستخدم هوية مدارة يعينها المستخدم.
أنشئ مجموعة موارد باستخدام أمر az group create:
az group create --name msdocs-custom-container-tutorial --location westeuropeيمكنك تغيير
--locationالقيمة لتحديد منطقة قريبة منك.إنشاء هوية مدارة في مجموعة الموارد:
az identity create --name myID --resource-group msdocs-custom-container-tutorial
إنشاء سجل حاويات
إنشاء سجل حاوية باستخدام الأمر التالي
az acr create. استبدل<registry-name>باسم فريد للسجل الخاص بك. يجب أن يحتوي الاسم على أحرف وأرقام فقط، ويجب أن يكون فريدا عبر جميع Azure.az acr create --name <registry-name> --resource-group msdocs-custom-container-tutorial --sku Basic --admin-enabled trueتتيح لك المعلمة
--admin-enabledدفع الصور إلى السجل باستخدام بيانات الاعتماد الإدارية.استرداد بيانات الاعتماد الإدارية عن طريق تشغيل
az credential acr showالأمر :az acr credential show --resource-group msdocs-custom-container-tutorial --name <registry-name>يوفر إخراج JSON من هذا الأمر اثنين من كلمات المرور مع اسم المستخدم الخاص بالتسجيل.
ادفع الصورة النموذجية إلى سجل الحاوية
في هذا القسم، يمكنك دفع الصورة إلى "سجل الحاوية"، الذي تستخدمه App Service لاحقا.
من المحطة الطرفية المحلية حيث قمت بإنشاء نموذج الصورة، استخدم
docker loginالأمر لتسجيل الدخول إلى سجل الحاوية:docker login <registry-name>.azurecr.io --username <registry-username>استبدل
<registry-name><registry-username>وبالقيم من الخطوات السابقة. عند المطالبة، اكتب إحدى كلمات المرور من القسم السابق.استخدم نفس اسم التسجيل في كافة الخطوات المتبقية من هذا القسم.
عند نجاح تسجيل الدخول، ضع علامة على صورة Docker المحلية إلى السجل:
docker tag appsvc-tutorial-custom-image <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latestاستخدم
docker pushالأمر لدفع الصورة إلى التسجيل:docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latestقد يستغرق تحميل الصورة في المرة الأولى بضع دقائق لأنها تتضمن الصورة الأساسية. التحميلات اللاحقة عادة ما تكون أسرع.
أثناء الانتظار، يمكنك إكمال الخطوات الموجودة في القسم التالي لتكوين App Service للنشر من التسجيل.
تخويل الهوية المدارة للسجل الخاص بك
الهوية المدارة التي قمت بإنشائها ليس لديها تفويض حتى الآن للسحب من سجل الحاوية. في هذه الخطوة، يمكنك تمكين التخويل.
استرداد المعرف الأساسي للهوية المدارة:
principalId=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query principalId --output tsv)استرداد معرف المورد لسجل الحاوية:
registryId=$(az acr show --resource-group msdocs-custom-container-tutorial --name <registry-name> --query id --output tsv)منح إذن الهوية المدارة للوصول إلى سجل الحاوية:
az role assignment create --assignee $principalId --scope $registryId --role "AcrPull"لمزيد من المعلومات حول هذه الأذونات، راجع ما هو التحكم في الوصول المستند إلى الدور في Azure؟.
أنشئ تطبيق الويب
قم بإنشاء خطة App Service باستخدام
az appservice plan createالأمر:az appservice plan create --name myAppServicePlan --resource-group msdocs-custom-container-tutorial --is-linuxتتوافق خطة خدمة التطبيقات مع الجهاز الافتراضي الذي يستضيف تطبيق الويب. بشكل افتراضي، يستخدم الأمر السابق مستوى تسعير B1 غير مكلف مجاني للشهر الأول. يمكنك تحديد الطبقة باستخدام المعلمة
--sku.إنشاء تطبيق ويب باستخدام
az webapp createالأمر:az webapp create --resource-group msdocs-custom-container-tutorial --plan myAppServicePlan --name <app-name> --deployment-container-image-name <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latestاستبدل
<app-name>باسم لتطبيق الويب. يجب أن يكون الاسم مميزًا عبر كافة خدمات Azure. استبدله أيضا<registry-name>باسم التسجيل من القسم السابق.تلميح
يمكنك استرداد إعدادات الحاوية في تطبيق الويب في أي وقت باستخدام الأمر
az webapp config container show --name <app-name> --resource-group msdocs-custom-container-tutorial. يتم تحديد الصورة في الخاصيةDOCKER_CUSTOM_IMAGE_NAME. عند نشر تطبيق الويب من خلال قوالب Azure DevOps أو Azure Resource Manager، يمكن أن تظهر الصورة أيضا في خاصية باسمLinuxFxVersion. كلا الخاصيتان يخدمان نفس الغرض. إذا كان كلاهما موجودا في تكوين تطبيق الويب،LinuxFxVersionيأخذ الأسبقية.
تكوين تطبيق الويب
في هذه الخطوة، يمكنك تكوين تطبيق الويب كما يلي:
- تكوين التطبيق لإرسال الطلبات إلى المنفذ 8000. حاوية العينة تستمع على المنفذ 8000 لطلبات الويب.
- قم بتكوين تطبيقك لاستخدام الهوية المدارة لسحب الصور من سجل الحاوية الخاص بك.
- تكوين النشر المستمر من سجل الحاوية. (ستؤدي كل دفعة صورة إلى السجل إلى تشغيل تطبيقك لسحب الصورة الجديدة.) هذه الخطوة ليست ضرورية لتكوين تطبيق الويب الخاص بك للسحب من سجل الحاوية الخاص بك، ولكن يمكنها إعلام تطبيق الويب عند دفع صورة جديدة إلى السجل. إذا لم تكمل هذه الخطوة، فيجب عليك تشغيل سحب الصورة يدويا عن طريق إعادة تشغيل تطبيق الويب.
استخدم
az webapp config appsettings setلتعيينWEBSITES_PORTمتغير البيئة كما هو متوقع بواسطة رمز التطبيق:az webapp config appsettings set --resource-group msdocs-custom-container-tutorial --name <app-name> --settings WEBSITES_PORT=8000استبدل
<app-name>بالاسم الذي استخدمته في الخطوة السابقة.قم بتمكين الهوية المدارة المعينة من قبل المستخدم في تطبيق الويب باستخدام
az webapp identity assignالأمر:id=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query id --output tsv) az webapp identity assign --resource-group msdocs-custom-container-tutorial --name <app-name> --identities $idاستبدل
<app-name>بالاسم الذي استخدمته في الخطوة السابقة.قم بتكوين تطبيقك للسحب من سجل الحاويات باستخدام الهويات المدارة.
appConfig=$(az webapp config show --resource-group msdocs-custom-container-tutorial --name <app-name> --query id --output tsv) az resource update --ids $appConfig --set properties.acrUseManagedIdentityCreds=Trueاستبدل
<app-name>بالاسم الذي استخدمته في الخطوة السابقة.قم بتعيين معرف العميل الذي يستخدمه تطبيق الويب الخاص بك للسحب من Container Registry. هذه الخطوة غير مطلوبة إذا كنت تستخدم الهوية المدارة المعينة من قبل النظام.
clientId=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query clientId --output tsv) az resource update --ids $appConfig --set properties.AcrUserManagedIdentityID=$clientIdتمكين CI/CD في App Service.
cicdUrl=$(az webapp deployment container config --enable-cd true --name <app-name> --resource-group msdocs-custom-container-tutorial --query CI_CD_URL --output tsv)CI_CD_URLهو عنوان URL الذي تنشئه لك App Service. يجب أن يقوم التسجيل الخاص بك URL هذا لإعلام App Service بحدوث دفعة للصورة. إنها لا تخلق في الواقع webhook لك.قم بإنشاء خطاف ويب في سجل الحاوية الخاص بك. استخدم CI_CD_URL التي حصلت عليها في الخطوة الأخيرة.
az acr webhook create --name appserviceCD --registry <registry-name> --uri $cicdUrl --actions push --scope appsvc-tutorial-custom-image:latestلاختبار ما إذا كان خطاف الويب الخاص بك قد تم تكوينه بشكل صحيح ، قم باختبار اتصال الإخطار على الويب ومعرفة ما إذا كنت ستحصل على استجابة 200 موافق.
eventId=$(az acr webhook ping --name appserviceCD --registry <registry-name> --query id --output tsv) az acr webhook list-events --name appserviceCD --registry <registry-name> --query "[?id=='$eventId'].eventResponseMessage"تلميح
لمشاهدة كافة المعلومات حول كافة أحداث webhook قم بإزالة
--queryالمعلمة.إذا كنت تقوم ببث سجل الحاوية، يجب أن تشاهد رسالة
Starting container for siteبعد اختبار اتصال خطاف الويب لأن خطاف الويب يقوم بتشغيل التطبيق لإعادة التشغيل.
استعرض التطبيق
لاختبار التطبيق، استعرض للوصول إلى https://<app-name>.azurewebsites.net. استبدل <app-name> باسم تطبيق الويب.
في المرة الأولى التي تحاول فيها الوصول إلى التطبيق، قد يستغرق التطبيق بعض الوقت للاستجابة لأن App Service يجب أن تسحب الصورة بأكملها من السجل. إذا انتهت مهلة المتصفح، قم فقط بتحديث الصفحة. بعد سحب الصورة الأولية ، سيتم تشغيل الاختبارات اللاحقة بشكل أسرع.
الوصول إلى سجلات التشخيص
أثناء انتظارك لسحب App Service للصورة، من المجدي أن ترى بالضبط ما تقوم به App Service عن طريق بث سجلات الحاوية إلى المحطة الطرفية.
تشغيل تسجيل الحاويات:
az webapp log config --name <app-name> --resource-group msdocs-custom-container-tutorial --docker-container-logging filesystemقم بتمكين تدفق التسجيل:
az webapp log tail --name <app-name> --resource-group msdocs-custom-container-tutorialوفي حال عدم رؤية سجلات وحدة التحكم على الفور، فتحقق مجددًا في غضون 30 ثانية.
يمكنك أيضا فحص ملفات السجل من المستعرض بالانتقال إلى
https://<app-name>.scm.azurewebsites.net/api/logs/docker.لإيقاف دفق السجل في أي وقت، حدد Ctrl+C.
قم بتعديل رمز التطبيق وإعادة النشر
في هذا القسم، يمكنك إجراء تغيير على رمز تطبيق الويب، وإعادة إنشاء الصورة، ثم دفعها إلى سجل الحاوية. ثم يقوم App Service بسحب الصورة المحدثة تلقائيا من التسجيل لتحديث تطبيق الويب قيد التشغيل.
في مجلد docker-django-webapp-linux المحلي، افتح app/templates/app/index.html.
تغيير عنصر HTML الأول لمطابقة التعليمات البرمجية التالية.
<nav class="navbar navbar-inverse navbar-fixed-top"> <div class="container"> <div class="navbar-header"> <a class="navbar-brand" href="#">Azure App Service - Updated Here!</a> </div> </div> </nav>احفظ تغييراتك.
انتقل إلى مجلد docker-django-webapp-linux وأعد إنشاء الصورة:
docker build --tag appsvc-tutorial-custom-image .تحديث علامة الصورة إلى
latest:docker tag appsvc-tutorial-custom-image <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latestاستبدل
<registry-name>باسم سجلك.قم بدفع الصورة إلي السجل:
docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latestعند اكتمال دفع الصورة، يقوم الإخطار على الويب بإعلام App Service بالدفع، وتحاول App Service سحب الصورة المحدثة. انتظر بضع دقائق، ثم تحقق من نشر التحديث بالانتقال إلى
https://<app-name>.azurewebsites.net.
الاتصال بالحاوية باستخدام SSH
يتيح SSH اتصال أمان محسن بين حاوية وعميل. لتمكين اتصال SSH بالحاوية الخاصة بك، يجب تكوين صورتك المخصصة لها. بمجرد تشغيل الحاوية، يمكنك فتح اتصال SSH.
تكوين الحاوية لـ SSH
يحتوي نموذج التطبيق المستخدم في هذا البرنامج التعليمي بالفعل على التكوين الضروري في Dockerfile، والذي يقوم بتثبيت خادم SSH وتعيين بيانات اعتماد تسجيل الدخول أيضا. هذا القسم إعلامي فقط. للاتصال بالحاوية، تخط إلى القسم التالي.
ENV SSH_PASSWD "root:Docker!"
RUN apt-get update \
&& apt-get install -y --no-install-recommends dialog \
&& apt-get update \
&& apt-get install -y --no-install-recommends openssh-server \
&& echo "$SSH_PASSWD" | chpasswd
إشعار
لا يسمح هذا التكوين بالاتصالات الخارجية بالحاوية. SSH متاح فقط من خلال موقع Kudu / SCM. تمت مصادقة موقعKudu/SCM باستخدام حساب Azure الخاص بك.
root:Docker! لا ينبغي تغييره عند استخدام SSH. يستخدم SCM/KUDU بيانات اعتماد مدخل Microsoft Azure. سيؤدي تغيير هذه القيمة إلى حدوث خطأ عند استخدام SSH.
يقوم Dockerfile أيضا بنسخ الملف sshd_config إلى المجلد /etc/ssh/ ويعرض المنفذ 2222 على الحاوية:
COPY sshd_config /etc/ssh/
# ...
EXPOSE 8000 2222
المنفذ 2222 هو منفذ داخلي يمكن الوصول إليه فقط بواسطة حاويات ضمن bridge network خاصة بشبكة اتصال ظاهرية خاصة.
وأخيرا، يبدأ البرنامج النصي المدرج init.shملقم SSH.
#!/bin/bash
service ssh start
افتح اتصال SSH بالحاوية
انتقل إلى
https://<app-name>.scm.azurewebsites.net/webssh/hostحساب Azure الخاص بك وقم بتسجيل الدخول باستخدامه. استبدل<app-name>باسم تطبيق الويب.بمجرد تسجيل الدخول، تتم استعادة توجيهك إلى صفحة معلومات لتطبيق الويب. حدد SSH في أعلى الصفحة لفتح واجهات الأوامر واستخدام الأوامر.
على سبيل المثال، يمكنك فحص العمليات التي تعمل داخل التطبيق باستخدام
topالأمر .
تنظيف الموارد
قد تتحمل الموارد التي أنشأتها في هذه المقالة تكاليف مستمرة. لتنظيف الموارد، تحتاج إلى حذف مجموعة الموارد التي تحتوي عليها:
az group delete --name msdocs-custom-container-tutorial
الخطوات التالية
ما تعلمته:
- نشر صورة مخصصة إلى سجل حاوية خاص.
- نشر الصورة المخصصة إلى App Service.
- تحديث الصورة وإعادة نشرها.
- الوصول إلى سجلات التشخيص.
- الاتصال بالحاوية باستخدام SSH.
- ادفع صورة Docker مخصصة إلى Container Registry.
- نشر الصورة المخصصة إلى App Service.
- تكوين متغيرات البيئة.
- اسحب الصورة إلى App Service باستخدام هوية مدارة.
- الوصول إلى سجلات التشخيص.
- قم بتمكين CI/CD من سجل الحاويات إلى App Service.
- الاتصال بالحاوية باستخدام SSH.
انتقل إلى البرنامج التعليمي التالي:
أو تحقق من الموارد الأخرى: