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

Google یک ابزار قدرتمند ساخت تصویر ارائه می‌کند که با آن می‌توانید به راحتی و بدون Docker یا Dockerfile یک تصویر ظرف بهینه شده Docker را برای برنامه‌های جاوا بسازید و منتشر کنید. 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
  • یک مرورگر، مانند گوگل کروم

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

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

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

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

گذراندن از طریق این نرم افزار کد نباید بیش از چند دلار هزینه داشته باشد، اما اگر تصمیم به استفاده از منابع بیشتری داشته باشید یا آنها را در حال اجرا رها کنید، ممکن است بیشتر باشد.

کاربران جدید Google Cloud واجد شرایط استفاده آزمایشی رایگان 300 دلاری هستند.

پوسته ابری

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

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

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

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

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

این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 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`
gcloud config list project

خروجی فرمان

[core]
project = <PROJECT_ID>

اگر اینطور نیست، می توانید آن را با این دستور تنظیم کنید:

gcloud config set project <PROJECT_ID>

خروجی فرمان

Updated property [core/project].
  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 می کند. پیش نمایش وب را کلیک کنید در نوار ابزار Cloud Shell و انتخاب Preview در پورت 8080 برای دسترسی به برنامه.

  1. شما باید پاسخ 404 را دریافت کنید زیرا برنامه هنوز هیچ کار مفیدی انجام نمی دهد. برنامه را با Control+C متوقف کنید.
  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. دوباره برنامه را با استفاده از پیش نمایش وب بررسی کنید . این بار باید پیام « Kotlin app on Cloud Run, containerized by Jib! » را مشاهده کنید. برنامه را با Control+C متوقف کنید.

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

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

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

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

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

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

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

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

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

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

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

Kotlin app on Cloud Run, containerized by Jib!

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

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

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

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

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

بیشتر بدانید