توفّر 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
إعداد البيئة بالسرعة التي تناسبك
- سجِّل الدخول إلى Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. (إذا لم يكن لديك حساب على Gmail أو G Suite، عليك إنشاء حساب).
تذكَّر معرّف المشروع، وهو اسم فريد في جميع مشاريع 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`
gcloud config list project
ناتج الأمر
[core] project = <PROJECT_ID>
إذا لم يكن كذلك، يمكنك تعيينه من خلال هذا الأمر:
gcloud config set project <PROJECT_ID>
ناتج الأمر
Updated property [core/project].
- أنشئ تطبيق 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
- أنشئ فئة
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
.
باستخدام Jib، يمكنك إنشاء حاوية لتطبيقك بطريقة محسّنة بدون Docker ونشره في أي سجل حاويات.
- قبل المتابعة، عليك تفعيل واجهة برمجة التطبيقات Container Registry API. يجب تنفيذ هذه الخطوة مرة واحدة فقط لكل مشروع لإتاحة الوصول إلى واجهة برمجة التطبيقات.
$ gcloud services enable containerregistry.googleapis.com
- تشغيل Jib لإنشاء صورة Docker ونشرها في Container Registry
$ ./mvnw com.google.cloud.tools:jib-maven-plugin:1.8.0: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.
ستظهر لك رسالة تفيد بنشر صورتك بنجاح.
توفّر خدمة Cloud Run إمكانية استخدام الحاويات بدون خادم، وتوسّع نطاق الحاويات التي لا تتضمّن حالة تلقائيًا.
- انقر على قائمة التنقّل
مرة أخرى واختَر Cloud Run.
إذا كانت هذه هي المرة الأولى التي تصل فيها إلى Cloud Run، سيظهر لك مربّع الحوار التالي لإعداد الخدمة لمرة واحدة. انقر على بدء استخدام Cloud Run إذا ظهرت.
- في صفحة Cloud Run، انقر على إنشاء خدمة.
- في الشاشة التالية، انقر على اختيار ضمن المصدر. المصدر هو الصورة التي تريد تشغيلها على Cloud Run.
- سيعرض مربّع الحوار الصورة التي أنشأتها سابقًا. اختَر الصورة وانقر على متابعة.
- لم يتبقَّ أمامك سوى بضع نقرات لنشر التطبيق الآن. ضمن منصة النشر، اختَر Cloud Run (مُدارة بالكامل) لإدارة الخدمة بالكامل على Google Cloud. اختَر منطقة مناسبة لموقعك الجغرافي، ثم اختَر السماح بعمليات الاستدعاء غير المصادَق عليها، وانقر على إنشاء. هذا كل شيء!
عند نشر الصورة بالكامل، ستعرض صفحة Cloud Run عنوان URL للوصول إلى التطبيق. يمكنك الاطّلاع عليه.
في النهاية، ستظهر لك الرسالة المتوقّعة من التطبيق.
Kotlin app on Cloud Run, containerized by Jib!
هذا كل شيء! في المستقبل، إذا كنت بحاجة إلى نشر إصدارات جديدة من التطبيق، يمكنك إجراء ذلك من خلال النقر على نشر نسخة جديدة في الصفحة.
- لتنظيف بيئتك، عليك حذف التطبيق الذي تم نشره على Cloud Run والصورة المنشورة على Container Registry. انتقِل إلى Cloud Run، واختَر التطبيق، ثم انقر على حذف.
- وبالمثل، انتقِل إلى صفحة Container Registry واحذف الصورة.
تهانينا! لقد وضعت تطبيق Spring Boot Kotlin في حاوية ونشرته على Cloud Run بنجاح.
باستخدام Jib، أنشأت صورة حاوية محسّنة بدون تثبيت Docker أو كتابة Dockerfile ونشرتها في Container Registry. يحسّن Jib عملية إنشاء الصور، ما يتيح لأي شخص لا يملك معرفة متعمقة بـ Docker إنشاء حاويات لتطبيقات Java بسرعة وكفاءة. بعد ذلك، وببضع نقرات، نشرت التطبيق على Cloud Run لبدء عرضه في وقت قصير.
مزيد من المعلومات
- نشر تطبيق Java على Kubernetes في Google Kubernetes Engine
- مستندات Cloud Run
- نظرة عامة على Cloud Run
- نقدّم لك Jib: أداة لإنشاء صور Java Docker بشكل أفضل
- إنشاء حاويات بشكل أسرع باستخدام Jib، وهي أداة من Google لإنشاء الصور لتطبيقات Java
- Jib—containerize your Java app
- قناة Jib Gitter
- قائمة Jib البريدية للمستخدمين