یک برنامه Spring Boot Kotlin را کانتینر کنید و آن را در Cloud Run اجرا کنید

1. قبل از شروع

Google یک ابزار قدرتمند ساخت تصویر ارائه می‌کند که با آن می‌توانید به راحتی یک تصویر ظرف Docker بهینه‌سازی شده برای برنامه‌های جاوا را در کمترین زمان و بدون Docker یا Dockerfile بسازید و منتشر کنید. Google Cloud همچنین بدون سرور را با Cloud Run به کانتینرها می آورد، یک پلت فرم محاسباتی مدیریت شده که به طور خودکار کانتینرهای بدون حالت شما را مقیاس می کند. در این لبه کد، خواهید دید که چقدر آسان است که برنامه Spring Boot Kotlin خود را در ظرف قرار دهید، آن را در Container Registry منتشر کنید و تصویر را در Google Cloud به صورت یکپارچه اجرا کنید!

این برنامه کد شما را در راه‌اندازی یک برنامه ساده در Kotlin راهنمایی می‌کند که استفاده از سرویس‌ها و ابزارهای Google Cloud از جمله Jib ، Container Registry و Cloud Run را نشان می‌دهد.

پیش نیازها

  • آشنایی با زبان و ابزارهای برنامه نویسی جاوا
  • آشنایی با ویرایشگرهای متن استاندارد لینوکس مانند Vim، Emacs و nano

کاری که خواهی کرد

  • یک برنامه Spring Boot Kotlin راه اندازی کنید.
  • یک تصویر Docker بهینه بسازید.
  • تصویر را در Container Registry منتشر کنید.
  • برنامه کانتینری را در Cloud Run اجرا کنید.

آنچه شما نیاز دارید

  • یک پروژه Google Cloud
  • یک مرورگر، مانند گوگل کروم

2. راه اندازی

تنظیم محیط خود به خود

  1. به کنسول Cloud وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

شناسه پروژه را به خاطر بسپارید، یک نام منحصر به فرد در تمام پروژه های Google Cloud (نام بالا قبلاً گرفته شده است و برای شما کار نخواهد کرد، متأسفیم!). بعداً در این آزمایشگاه کد به عنوان PROJECT_ID نامیده خواهد شد.

  1. در مرحله بعد، برای استفاده از منابع Google Cloud، باید صورت‌حساب را در Cloud Console فعال کنید .

اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. حتماً دستورالعمل‌های موجود در بخش «تمیز کردن» را دنبال کنید که به شما توصیه می‌کند چگونه منابع را خاموش کنید تا بیش از این آموزش متحمل صورت‌حساب نشوید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.

پوسته ابری

در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Cloud Shell استفاده می کنید، یک محیط خط فرمان که در Google Cloud اجرا می شود.

Cloud Shell را فعال کنید

  1. از Cloud Console، روی Activate Cloud Shell کلیک کنید 4292cbf4971c9786.png .

bce75f34b2c53987.png

اگر قبلاً Cloud Shell را راه‌اندازی نکرده‌اید، یک صفحه میانی (در زیر تاشو) برای شما نمایش داده می‌شود که آن را توصیف می‌کند. اگر اینطور است، روی Continue کلیک کنید (و دیگر آن را نخواهید دید). در اینجا به نظر می رسد که آن صفحه یک بار مصرف:

70f315d7b402b476.png

تهیه و اتصال به Cloud Shell فقط باید چند لحظه طول بکشد.

fbe3a0674c982259.png

این ماشین مجازی با تمام ابزارهای توسعه مورد نیاز شما بارگذاری شده است. این دایرکتوری اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد شبکه و احراز هویت را بسیار افزایش می دهد. بیشتر، اگر نه همه، کار شما در این کد لبه را می توان به سادگی با یک مرورگر یا Chromebook انجام داد.

پس از اتصال به Cloud Shell، باید ببینید که قبلاً احراز هویت شده اید و پروژه قبلاً روی ID پروژه شما تنظیم شده است.

  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 Initializr یک برنامه Spring Boot جدید ایجاد کنید.
$ 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 و انتخاب Preview در پورت 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 را فعال کنید. این کار فقط باید یک بار در هر پروژه انجام شود تا 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

در نهایت، پیام زیر را مشاهده خواهید کرد که برنامه حاوی Containerized است و به Registry Container شما منتقل شده است.

[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 برگردید، روی منوی پیمایش کلیک کنید c8b4ea3c68f4c1e3.png و Container Registry را انتخاب کنید.

6421550ba806beab.png

38ae0ca573c3dcd.png

خواهید دید که تصویر شما با موفقیت منتشر شده است.

c9086605411691c3.png

6. برنامه کانتینری را در Cloud Run اجرا کنید

Cloud Run بدون سرور را به کانتینرها می آورد و به طور خودکار کانتینرهای بدون حالت شما را مقیاس می کند.

  1. روی منوی ناوبری کلیک کنید c8b4ea3c68f4c1e3.png دوباره و Cloud Run را انتخاب کنید.

812c7c87527ebe4a.png

اگر این اولین باری است که به Cloud Run دسترسی پیدا می‌کنید، کادر گفتگوی زیر را برای راه‌اندازی یک‌باره مشاهده خواهید کرد. اگر ظاهر شد روی Start Using Cloud Run کلیک کنید.

1b2bf05712f6150a.png

  1. در صفحه Cloud Run، روی Create Service کلیک کنید.

c0b4b980662f7807.png

  1. در صفحه بعد، روی انتخاب در زیر منبع کلیک کنید. منبع تصویری است که می خواهید در Cloud Run اجرا شود.

2049621ae97d62ee.png

  1. دیالوگ تصویری را که قبلا ساخته اید نشان می دهد. تصویر را انتخاب کنید و روی Continue کلیک کنید.

564367bc65caefbf.png

  1. اکنون فقط چند کلیک با استقرار برنامه فاصله دارید. در زیر پلت فرم استقرار ، Cloud Run (کاملاً مدیریت شده) را انتخاب کنید تا سرویس به طور کامل در Google Cloud مدیریت شود. یک منطقه مناسب برای موقعیت مکانی خود انتخاب کنید، اجازه دادن به فراخوان های تایید نشده را انتخاب کنید و روی ایجاد کلیک کنید. همین!

3eb0f51d15326cac.png

هنگامی که تصویر به طور کامل مستقر شد، صفحه Cloud Run یک URL برای دسترسی به برنامه نمایش می دهد. آن را بررسی کنید!

8bf800dd6e2f44f2.png

در پایان، پیامی را که از برنامه انتظار دارید مشاهده خواهید کرد.

Kotlin app on Cloud Run, containerized by Jib!

همین! در آینده، اگر نیاز به استقرار نسخه‌های جدید برنامه دارید، می‌توانید با کلیک روی Deploy New Revision در صفحه این کار را انجام دهید.

7. پاکسازی کنید

  1. برای پاکسازی محیط خود، باید برنامه مستقر شده را در Cloud Run و تصویر منتشر شده در Container Registry را حذف کنید. به Cloud Run بروید، برنامه را انتخاب کنید و روی Delete کلیک کنید.

1dfc2f51c1b5f6e.png

  1. به همین ترتیب به صفحه Container Registry رفته و تصویر را حذف کنید.

1b724136c1655935.png

8. تبریک می گویم

تبریک می گویم! شما با موفقیت برنامه Spring Boot Kotlin خود را کانتینری کردید و آن را در Cloud Run مستقر کردید!

با استفاده از Jib، یک تصویر کانتینر بهینه‌سازی شده بدون نصب یا نوشتن Dockerfile ساختید و آن را در Container Registry منتشر کردید. Jib ساخت تصویر را بهینه می‌کند، بنابراین هر کسی که دانش عمیق Docker را نداشته باشد، می‌تواند برنامه‌های جاوا را سریع و کارآمد کند. سپس، با چند کلیک، برنامه را در Cloud Run مستقر کردید تا در کمترین زمان سرویس را شروع کنید.

بیشتر بدانید