إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
في هذا البرنامج التعليمي، يمكنك إعداد تطبيق متعدد الحاويات لاستخدامه في Kubernetes. يمكنك استخدام أدوات التطوير الموجودة مثل Docker Compose لإنشاء التطبيق واختباره محليا. ستتعلم كيفية:
- استنساخ نموذج لمصدر تطبيق من GitHub.
- إنشاء صورة حاوية من مصدر التطبيق النموذجي.
- اختبر التطبيق متعدد الحاويات في بيئة Docker محلية.
بمجرد الانتهاء من ذلك، يتم تشغيل التطبيق التالي في بيئة التطوير المحلية:
في الدروس اللاحقة، تقوم برفع صورة الحاوية إلى Azure Container Registry (ACR)، ثم تنشرها في مجموعة AKS.
قبل البدء
يفترض هذا البرنامج التعليمي فهما أساسيا لمفاهيم Docker الأساسية مثل الحاويات وصور الحاوية والأوامر docker . للحصول على نظرة تمهيدية على أساسيات الحاوية، راجع بدء استخدام Docker.
لإكمال هذا البرنامج التعليمي، تحتاج إلى بيئة تطوير Docker محلي تشغل حاويات Linux. يوفر دوكر حزما تضبط دوكر على نظام Mac، Windows، أو Linux.
Note
لا يتضمن Azure Cloud Shell مكونات Docker المطلوبة لإكمال كل خطوة في هذه الدروس. لذلك، نوصي باستخدام بيئة تطوير Docker كاملة.
الحصول على التعليمة البرمجية للتطبيق
تطبيق sample المستخدم في هذا الدرس هو تطبيق أساسي لواجهة المتجر يتضمن عمليات نشر وخدمات Kubernetes التالية:
- واجهة المتجر: تطبيق ويب للعملاء لعرض المنتجات وتقديم الطلبات.
- خدمة المنتج: تعرض معلومات المنتج.
- خدمة الطلب: يضع الطلبات.
- Rabbit MQ: قائمة انتظار الرسائل لقائمة انتظار الطلبات.
أنشئ مجلد على جهازك وانتقل إليه في جلسة الطرفية، مثل Bash. يستخدم هذا المثال دليلا يسمى demorepo لكن يمكنك استخدام أي اسم تريده.
mkdir demorepo cd demorepoاستخدم git لاستنساخ نموذج التطبيق إلى بيئة التطوير الخاصة بك.
git clone https://github.com/Azure-Samples/aks-store-demo.gitانتقل إلى المجلد المستنسخ.
cd aks-store-demo
مراجعة ملف Docker Compose
التطبيق النموذجي الذي تنشئه في هذا الدرس يستخدم ملف docker-compose-quickstart ملف YAML من repository الذي قمت باسنساخه.
services:
rabbitmq:
image: rabbitmq:3.13.2-management-alpine
container_name: 'rabbitmq'
restart: always
environment:
- "RABBITMQ_DEFAULT_USER=username"
- "RABBITMQ_DEFAULT_PASS=password"
ports:
- 15672:15672
- 5672:5672
healthcheck:
test: ["CMD", "rabbitmqctl", "status"]
interval: 30s
timeout: 10s
retries: 5
volumes:
- ./rabbitmq_enabled_plugins:/etc/rabbitmq/enabled_plugins
networks:
- backend_services
order-service:
build: src/order-service
container_name: 'order-service'
restart: always
ports:
- 3000:3000
healthcheck:
test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://order-service:3000/health"]
interval: 30s
timeout: 10s
retries: 5
environment:
- ORDER_QUEUE_HOSTNAME=rabbitmq
- ORDER_QUEUE_PORT=5672
- ORDER_QUEUE_USERNAME=username
- ORDER_QUEUE_PASSWORD=password
- ORDER_QUEUE_NAME=orders
- ORDER_QUEUE_RECONNECT_LIMIT=3
networks:
- backend_services
depends_on:
rabbitmq:
condition: service_healthy
product-service:
build: src/product-service
container_name: 'product-service'
restart: always
ports:
- 3002:3002
healthcheck:
test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://product-service:3002/health"]
interval: 30s
timeout: 10s
retries: 5
environment:
- AI_SERVICE_URL=http://ai-service:5001/
networks:
- backend_services
store-front:
build: src/store-front
container_name: 'store-front'
restart: always
ports:
- 8080:8080
healthcheck:
test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://store-front:80/health"]
interval: 30s
timeout: 10s
retries: 5
environment:
- VUE_APP_PRODUCT_SERVICE_URL=http://product-service:3002/
- VUE_APP_ORDER_SERVICE_URL=http://order-service:3000/
networks:
- backend_services
depends_on:
- product-service
- order-service
networks:
backend_services:
driver: bridge
إنشاء صور الحاوية وتشغيل التطبيق
يمكنك استخدام Docker Compose لأتمتة بناء صور الحاويات ونشر تطبيقات الحاويات المتعددة.
Docker
إنشاء صورة الحاوية، وتنزيل صورة RabbitMQ، وبدء تشغيل التطبيق باستخدام
docker composeالأمر :docker compose -f docker-compose-quickstart.yml up -dعرض الصور التي تم إنشاؤها
docker imagesباستخدام الأمر .docker imagesيظهر إخراج المثال المكثف التالي الصور التي تم إنشاؤها:
REPOSITORY TAG IMAGE ID aks-store-demo-product-service latest 72f5cd7e6b84 aks-store-demo-order-service latest 54ad5de546f9 aks-store-demo-store-front latest 1125f85632ae ...عرض الحاويات قيد التشغيل باستخدام
docker psالأمر .docker psيظهر إخراج المثال المكثف التالي أربع حاويات قيد التشغيل:
CONTAINER ID IMAGE f27fe74cfd0a aks-store-demo-product-service df1eaa137885 aks-store-demo-order-service b3ce9e496e96 aks-store-demo-store-front 31df28627ffa rabbitmq:3.13.2-management-alpine
قم باختبار التطبيق محليًا
لمشاهدة التطبيق قيد التشغيل، انتقل إلى http://localhost:8080 في مستعرض ويب محلي. يقوم تطبيق العينة بالتحميل كما هو موضح في المثال التالي:
في هذه الصفحة، يمكنك عرض المنتجات وإضافتها إلى سلة التسوق الخاصة بك، ثم تقديم طلب.
تنظيف الموارد
نظرا لأنك تحققت من صحة وظيفة التطبيق، يمكنك إيقاف الحاويات قيد التشغيل وإزالتها. لا تحذف صور الحاوية لأنك تستخدمها في الدرس القادم.
قم بإيقاف وإزالة مثيلات الحاوية والموارد باستخدام docker-compose down الأمر .
docker compose down
الخطوات التالية
في هذا البرنامج التعليمي، قمت بإنشاء نموذج تطبيق، وإنشاء صور حاوية للتطبيق، ثم اختبار التطبيق. لقد تعرفت على كيفية:
- استنساخ نموذج لمصدر تطبيق من GitHub.
- إنشاء صورة حاوية من مصدر التطبيق النموذجي.
- اختبر التطبيق متعدد الحاويات في بيئة Docker محلية.
في البرنامج التعليمي التالي، ستتعلم كيفية تخزين صور الحاوية في ACR.