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.
- Опубликуйте образ в реестре контейнеров.
- Запустите контейнеризированное приложение в Cloud Run.
Что вам понадобится
- Проект Google Cloud
- Браузер, например, Google Chrome
2. Настройка
Настройка среды для самостоятельного обучения
- Войдите в Cloud Console и создайте новый проект или используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .



Запомните идентификатор проекта (Project ID) — уникальное имя для всех проектов Google Cloud (указанное выше имя уже занято и вам не подойдёт, извините!). В дальнейшем в этом практическом занятии оно будет обозначаться как PROJECT_ID .
- Далее вам потребуется включить оплату в Cloud Console, чтобы использовать ресурсы Google Cloud.
Выполнение этого практического задания не должно стоить дорого, если вообще что-либо. Обязательно следуйте инструкциям в разделе «Очистка», где указано, как отключить ресурсы, чтобы избежать дополнительных расходов после завершения этого урока. Новые пользователи Google Cloud имеют право на бесплатную пробную версию стоимостью 300 долларов США .
Облачная оболочка
Хотя Google Cloud можно управлять удаленно с ноутбука, в этом практическом занятии вы будете использовать Cloud Shell — среду командной строки, работающую в Google Cloud.
Активировать Cloud Shell
- В консоли Cloud нажмите «Активировать Cloud Shell» .
.

Если вы никогда раньше не запускали Cloud Shell, вам будет показан промежуточный экран (внизу), описывающий его назначение. В этом случае нажмите «Продолжить» (и вы больше никогда его не увидите). Вот как выглядит этот одноразовый экран:

Подготовка и подключение к Cloud Shell займут всего несколько минут.

Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Она предоставляет постоянный домашний каталог размером 5 ГБ и работает в облаке Google, что значительно повышает производительность сети и аутентификацию. Большая часть, если не вся, работа в этом практическом задании может быть выполнена с помощью обычного браузера или вашего 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`
- Выполните следующую команду в Cloud Shell, чтобы убедиться, что команда gcloud знает о вашем проекте:
gcloud config list project
вывод команды
[core] project = <PROJECT_ID>
Если это не так, вы можете установить это с помощью следующей команды:
gcloud config set project <PROJECT_ID>
вывод команды
Updated property [core/project].
3. Инициализация приложения 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
- После запуска приложение начнет прослушивать порт 8080. Нажмите « Предварительный просмотр веб-страницы».
В панели инструментов Cloud Shell выберите «Предварительный просмотр на порту 8080» , чтобы получить доступ к приложению.

- Вы должны получить ответ 404, потому что приложение пока ничего полезного не делает. Остановите приложение с помощью
Control+C.
4. Добавьте веб-контроллер
- Создайте следующий класс
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.
5. Контейнеризуйте ваше приложение и опубликуйте его в реестре контейнеров.
С помощью Jib вы можете оптимизировать контейнеризацию своего приложения без Docker и публиковать его в любом реестре контейнеров.
- Прежде чем продолжить, необходимо активировать API реестра контейнеров. Это нужно сделать только один раз для каждого проекта, чтобы API стал доступен.
$ gcloud services enable containerregistry.googleapis.com
- Запустите Jib для сборки образа Docker и его публикации в реестре контейнеров.
$ ./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 и нажмите меню навигации.
и выберите «Реестр контейнеров» .


Вы увидите, что ваше изображение успешно опубликовано.

6. Запустите контейнеризированное приложение в Cloud Run.
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!
Вот и всё! В будущем, если вам потребуется развернуть новые версии приложения, вы сможете сделать это, нажав кнопку «Развернуть новую версию» на странице.
7. Уборка
- Для очистки среды необходимо удалить развернутое приложение в Cloud Run и опубликованный образ в Container Registry. Перейдите в Cloud Run , выберите приложение и нажмите «Удалить» .

- Аналогичным образом перейдите на страницу Реестра контейнеров и удалите образ.

8. Поздравляем!
Поздравляем! Вы успешно контейнеризировали ваше приложение 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 — улучшенная сборка образов Docker для Java.
- Создавайте контейнеры быстрее с помощью Jib, инструмента Google для сборки образов Java-приложений.
- Jib — контейнеризация вашего Java-приложения
- Канал Jib Gitter
- Список рассылки пользователей Jib