۱. قبل از شروع
گوگل یک ابزار قدرتمند برای ساخت ایمیج ارائه میدهد که با آن میتوانید به راحتی و بدون نیاز به داکر یا داکرفایل، یک ایمیج کانتینر داکر بهینهشده برای برنامههای جاوا بسازید و منتشر کنید. گوگل کلود همچنین با Cloud Run ، یک پلتفرم محاسباتی مدیریتشده که به طور خودکار کانتینرهای بدون وضعیت شما را مقیاسبندی میکند، قابلیت بدون سرور را به کانتینرها میآورد. در این آزمایشگاه کد، خواهید دید که کانتینر کردن برنامه Spring Boot Kotlin، انتشار در Container Registry و اجرای ایمیج روی Google Cloud به روشی یکپارچه چقدر آسان است!
این آزمایشگاه کد، شما را در راهاندازی یک برنامه ساده در کاتلین راهنمایی میکند که نحوه استفاده از سرویسها و ابزارهای Google Cloud، از جمله Jib ، Container Registry و Cloud Run را نشان میدهد.
پیشنیازها
- آشنایی با زبان برنامه نویسی جاوا و ابزارهای آن
- آشنایی با ویرایشگرهای متن استاندارد لینوکس مانند Vim، Emacs و nano
کاری که انجام خواهید داد
- یک برنامه Spring Boot Kotlin راهاندازی کنید.
- یک تصویر داکر بهینه شده بسازید.
- تصویر را در Container Registry منتشر کنید.
- برنامه کانتینر شده را روی Cloud Run اجرا کنید.
آنچه نیاز دارید
- یک پروژه ابری گوگل
- یک مرورگر، مانند گوگل کروم
۲. راهاندازی
تنظیم محیط خودتنظیم
- وارد Cloud Console شوید و یک پروژه جدید ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید. اگر از قبل حساب Gmail یا Google Workspace ندارید، باید یکی ایجاد کنید .



شناسه پروژه را به خاطر بسپارید، یک نام منحصر به فرد در تمام پروژههای Google Cloud (نام بالا قبلاً گرفته شده و برای شما کار نخواهد کرد، متاسفیم!). بعداً در این آزمایشگاه کد به آن PROJECT_ID گفته خواهد شد.
- در مرحله بعد، برای استفاده از منابع گوگل کلود، باید پرداخت را در Cloud Console فعال کنید .
اجرای این آزمایشگاه کد، اگر اصلاً هزینهای نداشته باشد، نباید هزینه زیادی داشته باشد. حتماً دستورالعملهای بخش «پاکسازی» را که به شما نحوه خاموش کردن منابع را آموزش میدهد، دنبال کنید تا پس از این آموزش، متحمل هزینه نشوید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان ۳۰۰ دلاری هستند.
پوسته ابری
اگرچه میتوان گوگل کلود را از راه دور و از طریق لپتاپ شما مدیریت کرد، اما در این آزمایشگاه کد از Cloud Shell ، یک محیط خط فرمان که در گوگل کلود اجرا میشود، استفاده خواهید کرد.
فعال کردن پوسته ابری
- از کنسول ابری، روی فعال کردن پوسته ابری کلیک کنید
.

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

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

این ماشین مجازی با تمام ابزارهای توسعه مورد نیاز شما پر شده است. این ماشین یک دایرکتوری خانگی ۵ گیگابایتی دائمی ارائه میدهد و در فضای ابری گوگل اجرا میشود که عملکرد شبکه و احراز هویت را تا حد زیادی بهبود میبخشد. بخش عمدهای از کار شما در این آزمایشگاه کد، اگر نگوییم همه، را میتوان به سادگی با یک مرورگر یا کرومبوک انجام داد.
پس از اتصال به 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].
۳. مقداردهی اولیه یک برنامه 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
- پس از شروع، برنامه شروع به گوش دادن به پورت ۸۰۸۰ میکند. روی پیشنمایش وب کلیک کنید
در نوار ابزار Cloud Shell کلیک کنید و برای دسترسی به برنامه ، پیشنمایش را روی پورت ۸۰۸۰ انتخاب کنید.

- شما باید با خطای ۴۰۴ مواجه شوید، زیرا برنامه هنوز هیچ کار مفیدی انجام نمیدهد. برنامه را با
Control+Cمتوقف کنید.
۴. یک کنترلر وب اضافه کنید
- کلاس
Controllerزیر را در پکیج demo ایجاد کنید:
$ 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متوقف کنید.
۵. برنامه خود را کانتینرایز کنید و در Container Registry منتشر کنید
با Jib ، میتوانید برنامه خود را به روشی بهینه و بدون Docker کانتینرایز کنید و در هر رجیستری کانتینری منتشر کنید.
- قبل از ادامه، باید API مربوط به رجیستری کانتینر را فعال کنید. این کار فقط یک بار در هر پروژه لازم است تا 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
در نهایت، پیام زیر را مشاهده خواهید کرد که نشان میدهد برنامه کانتینر شده و به رجیستری کانتینر شما منتقل شده است.
[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 Run اجرا کنید
Cloud Run سرور را به کانتینرها میآورد و به طور خودکار کانتینرهای بدون وضعیت شما را مقیاسبندی میکند.
- روی منوی ناوبری کلیک کنید
دوباره کلیک کنید و Cloud Run را انتخاب کنید.

اگر این اولین بار است که به Cloud Run دسترسی پیدا میکنید، کادر محاورهای زیر را برای تنظیمات یکباره مشاهده خواهید کرد. در صورت نمایش، روی «شروع استفاده از Cloud Run» کلیک کنید.

- در صفحه Cloud Run، روی ایجاد سرویس کلیک کنید.

- در صفحه بعد، در قسمت منبع (Source) ، روی انتخاب (Select) کلیک کنید. منبع، تصویری است که میخواهید روی Cloud Run اجرا کنید.

- پنجرهی محاورهای، ایمیجی که قبلاً ساختهاید را نشان میدهد. ایمیجی را انتخاب کنید و روی ادامه کلیک کنید.

- اکنون فقط چند کلیک تا استقرار برنامه فاصله دارید. در قسمت Deployment platform ، گزینه Cloud Run (fully managed) را انتخاب کنید تا سرویس به طور کامل در Google Cloud مدیریت شود. منطقه ای مناسب با موقعیت مکانی خود انتخاب کنید، Allow unauthenticated invocations را انتخاب کنید و روی Create کلیک کنید. همین!

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

در نهایت، پیامی را که از برنامه انتظار دارید، مشاهده خواهید کرد.
Kotlin app on Cloud Run, containerized by Jib!
همین! در آینده، اگر نیاز به استقرار نسخههای جدید برنامه داشتید، میتوانید با کلیک روی Deploy New Revision در صفحه، این کار را انجام دهید.
۷. تمیز کردن
- برای پاکسازی محیط خود، باید برنامهی مستقر شده در Cloud Run و تصویر منتشر شده در Container Registry را حذف کنید. به Cloud Run بروید، برنامه را انتخاب کنید و روی Delete کلیک کنید.

- به همین ترتیب، به صفحه رجیستری کانتینر بروید و تصویر را حذف کنید.

۸. تبریک
تبریک! شما با موفقیت برنامه Spring Boot Kotlin خود را کانتینرایز (Containerize) کردید و آن را در Cloud Run مستقر (Deploy) نمودید!
با استفاده از Jib، شما یک تصویر کانتینر بهینه شده بدون نصب Docker یا نوشتن Dockerfile ساختید و آن را در Container Registry منتشر کردید. Jib ساخت تصویر را بهینه میکند، بنابراین هر کسی که دانش عمیقی در مورد Docker ندارد میتواند برنامههای جاوا را به سرعت و به طور کارآمد کانتینری کند. سپس، با چند کلیک، برنامه را در Cloud Run مستقر کردید تا در کمترین زمان شروع به سرویسدهی کند.
بیشتر بدانید
- یک برنامه جاوا را روی Kubernetes در Google Kubernetes Engine مستقر کنید
- مستندات Cloud Run
- نمای کلی Cloud Run
- معرفی Jib - ساخت بهتر ایمیجهای جاوا داکر
- با Jib، ابزاری برای ساخت ایمیج گوگل برای برنامههای جاوا، کانتینرها را سریعتر بسازید
- Jib - برنامه جاوای خود را کانتینرایز کنید
- کانال جیب گیتر
- فهرست پستی کاربران Jib