1. قبل البدء
توفّر Google أداة فعّالة لإنشاء الصور يمكنك من خلالها بسهولة إنشاء صورة لحاوية Docker محسَّنة لتطبيقات Java ونشرها في وقت قصير بدون الحاجة إلى Docker أو Dockerfile. توفّر Google Cloud أيضًا حاويات بدون خادم باستخدام Cloud Run، وهو نظام حوسبة أساسي مُدار يضبط الحاويات التي لا تتضمّن حالة. في هذا الدرس التطبيقي حول الترميز، ستتعرَّف على مدى سهولة تضمين تطبيق Spring Boot Kotlin في حاويات ونشره في Container Registry وتشغيل الصورة على Google Cloud بطريقة سلسة.
يرشدك هذا الدرس التطبيقي إلى خطوات إعداد تطبيق بسيط في لغة Kotlin، ويوضّح كيفية استخدام خدمات Google Cloud وأدواتها، بما في ذلك Jib وContainer Registry وCloud Run.
المتطلبات الأساسية
- الإلمام بلغة وأدوات البرمجة Java
- معرفة أدوات تحرير النصوص القياسية في Linux، مثل Vim وEmacs وnano
الإجراءات التي ستنفذّها
- يمكنك إعداد تطبيق Spring Boot Kotlin.
- إنشاء صورة Docker محسَّنة.
- انشر الصورة في Container Registry.
- شغِّل التطبيق المحوَّل على Cloud Run.
المتطلبات
- مشروع على Google Cloud
- متصفح، مثل Google Chrome
2. بدء الإعداد
إعداد بيئة ذاتية
- سجِّل الدخول إلى Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.
يُرجى تذكُّر رقم تعريف المشروع، وهو اسم فريد في جميع مشاريع Google Cloud (سبق أن تم استخدام الاسم أعلاه ولن يكون مناسبًا لك). ستتم الإشارة إليها لاحقًا في هذا الدرس التطبيقي حول الترميز باسم PROJECT_ID
.
- بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد Google Cloud.
إنّ تنفيذ هذا الدرس التطبيقي حول الترميز لن يكون مكلفًا أو مكلفًا على الإطلاق. احرص على اتّباع أي تعليمات في قسم "الحذف سريعًا". الذي يقدم لك نصائح حول كيفية إيقاف تشغيل الموارد حتى لا تتكبّد أي فواتير خارج نطاق هذا البرنامج التعليمي. يكون مستخدمو Google Cloud الجدد مؤهَّلون للانضمام إلى برنامج فترة تجريبية مجانية بقيمة 300 دولار أمريكي.
Cloud Shell
مع أنّه يمكن إدارة Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي حول الترميز Cloud Shell، وهي بيئة سطر أوامر يتم تشغيلها في Google Cloud.
تفعيل Cloud Shell
- من Cloud Console، انقر على تفعيل Cloud Shell .
إذا لم يسبق لك بدء تشغيل Cloud Shell، ستظهر لك شاشة وسيطة (الجزء السفلي غير المرئي من الصفحة) تصف ماهيتها. إذا كان الأمر كذلك، فانقر على متابعة (ولن تراه مرة أخرى مطلقًا). إليك ما تبدو عليه هذه الشاشة التي تُستخدم لمرة واحدة:
من المفترَض أن تستغرق عملية إدارة الحسابات والاتصال بخدمة Cloud Shell بضع دقائق فقط.
يتم تحميل هذا الجهاز الافتراضي مع جميع أدوات التطوير التي تحتاجها. وتوفّر هذه الشبكة دليلاً رئيسيًا دائمًا بسعة 5 غيغابايت ويتم تشغيله في Google Cloud، ما يحسّن بشكل كبير من أداء الشبكة والمصادقة. يمكنك تنفيذ معظم عملك، إن لم يكن كلّه، في هذا الدرس التطبيقي حول الترميز باستخدام متصفّح أو جهاز Chromebook.
بعد الربط بخدمة Cloud Shell، من المفترض أن ترى أنّه قد تمت مصادقتك وأنّ المشروع معيّن سبق أن تم ضبطه على رقم تعريف مشروعك.
- شغِّل الأمر التالي في Cloud Shell لتأكيد مصادقتك:
gcloud auth list
مخرجات الأمر
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- شغّل الأمر التالي في Cloud Shell للتأكد من معرفة الأمر gcloud بمشروعك:
gcloud config list project
مخرجات الأمر
[core] project = <PROJECT_ID>
إذا لم يكن كذلك، يمكنك تعيينه من خلال هذا الأمر:
gcloud config set project <PROJECT_ID>
مخرجات الأمر
Updated property [core/project].
3- إعداد تطبيق Spring Boot
- يمكنك إنشاء تطبيق Spring Boot جديد من خلال Spring Initializr.
$ curl https://start.spring.io/starter.tgz \ -d language=kotlin \ -d dependencies=web \ -d baseDir=kotlin-jib-cloud-run | tar -xzvf -
تجدر الإشارة إلى أنّ أداة Initializr ستضيف تلقائيًا spring-boot-starter-web
إلى العناصر الاعتمادية الخاصة بك في pom.xml
من تطبيق النموذج.
- يمكنك التغيير إلى دليل تطبيق النموذج.
$ cd kotlin-jib-cloud-run
- أنشئ التطبيق وشغِّله باستخدام Maven.
$ ./mvnw -DskipTests spring-boot:run
- بعد بدء تشغيل التطبيق، سيبدأ الاستماع على المنفذ 8080. انقر على معاينة الويب في شريط أدوات Cloud Shell واختَر معاينة على المنفذ 8080 للوصول إلى التطبيق.
- من المفترض أن تحصل على استجابة 404 لأن التطبيق لا يفعل أي شيء مفيد حتى الآن. يمكنك إيقاف التطبيق باستخدام "
Control+C
".
4. إضافة وحدة تحكّم على الويب
- أنشِئ فئة
Controller
التالية في الحزمة التجريبية:
$ vi src/main/kotlin/com/example/demo/Controller.kt or $ nano src/main/kotlin/com/example/demo/Controller.kt
src/main/kotlin/com/example/demo/Controller.kt
package com.example.demo
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController
@RestController
class Controller {
@GetMapping("/")
fun saySomething(): String {
return "Kotlin app on Cloud Run, containerized by Jib!"
}
}
- أعِد إنشاء التطبيق وشغِّله.
$ ./mvnw spring-boot:run
- تحقَّق من التطبيق مرة أخرى باستخدام معاينة الويب . هذه المرة، من المفترض أن ترى الرسالة، "
Kotlin app on Cloud Run, containerized by Jib!
". يمكنك إيقاف التطبيق باستخدام "Control+C
".
5- تعبئة تطبيقك ونشره على Container Registry
باستخدام Jib، يمكنك احتواء تطبيقك بطريقة محسَّنة بدون Docker ونشره في أيّ قاعدة بيانات مسجّلين للحاويات.
- قبل المتابعة، عليك تفعيل Container Registry API. يجب تنفيذ ذلك مرة واحدة فقط لكل مشروع لإتاحة الوصول إلى واجهة برمجة التطبيقات.
$ gcloud services enable containerregistry.googleapis.com
- قم بتشغيل Jib لإنشاء صورة Docker ونشرها على Container Registry.
$ ./mvnw com.google.cloud.tools:jib-maven-plugin:3.1.1:build \ -Dimage=gcr.io/$GOOGLE_CLOUD_PROJECT/kotlin-jib-cloud-run
في النهاية، ستظهر لك الرسالة التالية التي تفيد بأنّ التطبيق مُضمّن في حاوية ويُرسَل إلى Container Registry.
[INFO] Built and pushed image as gcr.io/PROJECT_ID/kotlin-jib-cloud-run ... [INFO] BUILD SUCCESS
إذا ظهرت لك رسالة خطأ، يُرجى التحقّق جيدًا من ضبط $GOOGLE_CLOUD_PROJECT
بشكل صحيح على رقم تعريف مشروع Google Cloud (PROJECT_ID
).
- قبل المتابعة، تأكَّد مما إذا تم نشر الصورة بنجاح. ارجع إلى Cloud Console، وانقر على قائمة التنقل، ثم اختَر Container Registry.
ستلاحظ أنه تم نشر صورتك بنجاح.
6- تشغيل التطبيق المنفصل على Cloud Run
توفّر ميزة تشغيل السحابة الإلكترونية للحاويات بدون خادم، مع زيادة حجم الحاويات التي لا تتضمّن حالة تلقائيًا.
- انقر على قائمة التنقّل مرة أخرى واختَر تشغيل السحابة الإلكترونية.
إذا كانت هذه هي المرة الأولى التي تستخدم فيها Cloud Run، سيظهر لك مربّع الحوار التالي للإعداد لمرة واحدة. انقر على بدء استخدام التشغيل في السحابة الإلكترونية في حال ظهوره.
- في صفحة تشغيل السحابة الإلكترونية، انقر على إنشاء خدمة.
- في الشاشة التالية، انقر على اختيار ضمن المصدر. المصدر هو الصورة التي تريد تشغيلها على Cloud Run.
- سيعرض مربّع الحوار الصورة التي أنشأتها سابقًا. اختَر الصورة وانقر على متابعة.
- لم يتبقَّ سوى بضع نقرات لنشر التطبيق الآن. ضمن منصة النشر، اختَر تشغيل السحابة الإلكترونية (مُدارة بالكامل) لتتم إدارة الخدمة بالكامل على Google Cloud. اختَر منطقة مناسبة لموقعك الجغرافي، واختَر السماح بالاستدعاءات التي لم تتم مصادقتها، ثم انقر على إنشاء. هذا كل شيء!
عند نشر الصورة بالكامل، ستعرض صفحة تشغيل السحابة الإلكترونية عنوان URL للوصول إلى التطبيق. ننصحك بالاطّلاع عليه الآن.
في النهاية، ستظهر لك الرسالة التي تتوقعها من التطبيق.
Kotlin app on Cloud Run, containerized by Jib!
هذا كل شيء! في المستقبل، إذا احتجت إلى نشر إصدارات جديدة من التطبيق، يمكنك إجراء ذلك بالنقر على نشر إصدار جديد على الصفحة.
7. تَنظيم
- لتنظيف بيئتك، عليك حذف التطبيق المنشور على Cloud Run والصورة المنشورة على Container Registry. انتقِل إلى التشغيل في السحابة الإلكترونية، واختَر التطبيق، ثم انقر على حذف.
- وبالمثل، انتقل إلى صفحة Container Registry واحذف الصورة.
8. تهانينا
تهانينا! لقد نجحت في احتواء تطبيق Spring Boot Kotlin ونشره على Cloud Run.
باستخدام Jib، قمت بإنشاء صورة حاوية محسنة بدون تثبيت Docker أو كتابة ملف Docker ونشرته على Container Registry. يعمل Jib على تحسين عملية إنشاء الصور، بحيث يمكن لأي شخص ليس لديه معرفة عميقة بمنصة Docker إضافة تطبيقات Java بسرعة وكفاءة. وبعد ذلك، يمكنك ببضع نقرات نشر التطبيق على Cloud Run لبدء العرض على الفور.
مزيد من المعلومات
- تفعيل تطبيق Java على Kubernetes على Google Kubernetes Engine
- مستندات تشغيل Cloud
- نظرة عامة على تشغيل السحابة الإلكترونية
- مقدمة عن Jib: إنشاء صور Java Docker بشكل أفضل
- إنشاء الحاويات بشكل أسرع باستخدام Jib، وهي أداة لإنشاء صور من Google لتطبيقات Java
- Jib: إضافة تطبيق Java إلى حاوية
- قناة Jib Gitter
- القائمة البريدية لمستخدمي Jib