تضمين تطبيق Spring Boot Kotlin في حاويات ونشره في Cloud Run

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
  • متصفّح، مثل Google Chrome

2. الإعداد

إعداد البيئة بالسرعة التي تناسبك

  1. سجِّل الدخول إلى Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

تذكَّر رقم تعريف المشروع، وهو اسم فريد في جميع مشاريع Google Cloud (الاسم أعلاه مستخدَم حاليًا ولن يكون متاحًا لك، نأسف لذلك). سيتم الإشارة إليه لاحقًا في هذا الدرس العملي باسم PROJECT_ID.

  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console من أجل استخدام موارد Google Cloud.

لن تكلفك تجربة هذا الدرس التطبيقي حول الترميز الكثير من المال، إن لم تكلفك شيئًا على الإطلاق. احرص على اتّباع أي تعليمات في قسم "التنظيف" الذي ينصحك بكيفية إيقاف الموارد حتى لا تتحمّل رسومًا تتجاوز هذا البرنامج التعليمي. يمكن لمستخدمي Google Cloud الجدد الاستفادة من برنامج الفترة التجريبية المجانية بقيمة 300 دولار أمريكي.

Cloud Shell

على الرغم من إمكانية تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي حول الترميز Cloud Shell، وهي بيئة سطر أوامر تعمل في Google Cloud.

تفعيل Cloud Shell

  1. من Cloud Console، انقر على تفعيل Cloud Shell 4292cbf4971c9786.png.

bce75f34b2c53987.png

إذا لم يسبق لك بدء Cloud Shell، ستظهر لك شاشة وسيطة (الجزء السفلي غير المرئي من الصفحة) توضّح ماهيته. في هذه الحالة، انقر على متابعة (ولن تظهر لك مرة أخرى). في ما يلي الشكل الذي ستظهر به هذه الشاشة لمرة واحدة:

70f315d7b402b476.png

يستغرق توفير Cloud Shell والاتصال به بضع لحظات فقط.

fbe3a0674c982259.png

يتم تحميل هذا الجهاز الافتراضي بجميع أدوات التطوير التي تحتاج إليها. توفّر هذه الخدمة دليلًا رئيسيًا دائمًا بسعة 5 غيغابايت وتعمل في Google Cloud، ما يؤدي إلى تحسين أداء الشبكة والمصادقة بشكل كبير. يمكن إنجاز معظم العمل في هذا الدرس التطبيقي حول الترميز، إن لم يكن كله، باستخدام متصفّح أو جهاز Chromebook فقط.

بعد الاتصال بـ Cloud Shell، من المفترض أن يظهر لك أنّه تم إثبات هويتك وأنّه تم ضبط المشروع على رقم تعريف مشروعك.

  1. نفِّذ الأمر التالي في 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`
  1. نفِّذ الأمر التالي في Cloud Shell للتأكّد من أنّ أمر gcloud يعرف مشروعك:
gcloud config list project

ناتج الأمر

[core]
project = <PROJECT_ID>

إذا لم يكن كذلك، يمكنك تعيينه من خلال هذا الأمر:

gcloud config set project <PROJECT_ID>

ناتج الأمر

Updated property [core/project].

3- إعداد تطبيق Spring Boot

  1. أنشئ تطبيق 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 لتطبيق النموذج.

  1. الانتقال إلى دليل تطبيق النموذج
$ cd kotlin-jib-cloud-run
  1. إنشاء التطبيق وتشغيله باستخدام Maven
$ ./mvnw -DskipTests spring-boot:run
  1. بعد بدء تشغيل التطبيق، سيبدأ في الاستماع على المنفذ 8080. انقر على معاينة الويب 396bfd51f55afb5d.pngفي شريط أدوات Cloud Shell واختَر المعاينة على المنفذ 8080 للوصول إلى التطبيق.

4172e1e141daf0c1.png

  1. من المفترض أن تتلقّى الردّ 404 لأنّ التطبيق لا يقدّم أي وظائف مفيدة بعد. إيقاف التطبيق باستخدام Control+C

4. إضافة وحدة تحكّم على الويب

  1. أنشئ فئة 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!"
  }
}
  1. أعِد إنشاء التطبيق وشغِّله.
$ ./mvnw spring-boot:run
  1. تحقَّق من التطبيق مرة أخرى باستخدام معاينة الويب a6cfcaa1d2119c52.png. في هذه المرة، من المفترض أن تظهر لك الرسالة "Kotlin app on Cloud Run, containerized by Jib!". أوقِف التطبيق باستخدام Control+C.

5- تضمين تطبيقك في حاوية ونشره على Container Registry

باستخدام Jib، يمكنك إنشاء حاوية لتطبيقك بطريقة محسّنة بدون Docker ونشرها في أي سجلّ حاويات.

  1. قبل المتابعة، عليك تفعيل واجهة برمجة التطبيقات Container Registry API. يجب تنفيذ هذه الخطوة مرة واحدة فقط لكل مشروع لإتاحة الوصول إلى واجهة برمجة التطبيقات.
$ gcloud services enable containerregistry.googleapis.com
  1. تشغيل 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).

  1. قبل المتابعة، تحقَّق مما إذا تم نشر الصورة بنجاح. ارجِع إلى Cloud Console، وانقر على قائمة التنقّل c8b4ea3c68f4c1e3.png، ثم اختَر Container Registry.

6421550ba806beab.png

38ae0ca573c3dcd.png

ستظهر لك رسالة تفيد بنشر صورتك بنجاح.

c9086605411691c3.png

6. تشغيل التطبيق المحفوظ في حاوية على Cloud Run

توفّر خدمة Cloud Run الحوسبة بدون خادم للحاويات، وتوسّع نطاق الحاويات التي لا تتضمّن حالة تلقائيًا.

  1. انقر على قائمة التنقّل c8b4ea3c68f4c1e3.png مرة أخرى واختَر Cloud Run.

812c7c87527ebe4a.png

إذا كانت هذه هي المرة الأولى التي تصل فيها إلى Cloud Run، سيظهر لك مربّع الحوار التالي لإعداد الخدمة لمرة واحدة. انقر على بدء استخدام Cloud Run إذا ظهرت.

1b2bf05712f6150a.png

  1. في صفحة Cloud Run، انقر على إنشاء خدمة.

c0b4b980662f7807.png

  1. في الشاشة التالية، انقر على اختيار ضمن المصدر. المصدر هو الصورة التي تريد تشغيلها على Cloud Run.

2049621ae97d62ee.png

  1. سيعرض مربّع الحوار الصورة التي أنشأتها سابقًا. اختَر الصورة وانقر على متابعة.

564367bc65caefbf.png

  1. يمكنك نشر التطبيق الآن ببضع نقرات فقط. ضمن منصة النشر، اختَر Cloud Run (مُدارة بالكامل) لإدارة الخدمة بالكامل على Google Cloud. اختَر منطقة مناسبة لموقعك الجغرافي، ثم اختَر السماح بعمليات الاستدعاء غير المصادَق عليها، وانقر على إنشاء. هذا كل شيء!

3eb0f51d15326cac.png

عند نشر الصورة بالكامل، ستعرض صفحة Cloud Run عنوان URL للوصول إلى التطبيق. يمكنك الاطّلاع عليه.

8bf800dd6e2f44f2.png

في النهاية، ستظهر لك الرسالة المتوقّعة من التطبيق.

Kotlin app on Cloud Run, containerized by Jib!

هذا كل شيء! في المستقبل، إذا كنت بحاجة إلى نشر إصدارات جديدة من التطبيق، يمكنك إجراء ذلك من خلال النقر على نشر نسخة جديدة في الصفحة.

7. تَنظيم

  1. لتنظيف بيئتك، عليك حذف التطبيق الذي تم نشره على Cloud Run والصورة المنشورة على Container Registry. انتقِل إلى Cloud Run، واختَر التطبيق، ثم انقر على حذف.

1dfc2f51c1b5f6e.png

  1. وبالمثل، انتقِل إلى صفحة Container Registry واحذف الصورة.

1b724136c1655935.png

8. تهانينا

تهانينا! لقد وضعت تطبيق Spring Boot Kotlin في حاوية ونشرته على Cloud Run بنجاح.

باستخدام Jib، أنشأت صورة حاوية محسّنة بدون تثبيت Docker أو كتابة Dockerfile ونشرتها إلى Container Registry. تحسّن أداة Jib عملية إنشاء الصور، ما يتيح لأي شخص لا يملك معرفة تفصيلية ببرنامج Docker إنشاء حاويات لتطبيقات Java بسرعة وفعالية. بعد ذلك، نشرت التطبيق على Cloud Run ببضع نقرات لبدء عرضه في وقت قصير.

مزيد من المعلومات