Развертывание приложения Spring Boot в стандартной среде App Engine

Развертывание приложения Spring Boot в стандартной среде App Engine

О практической работе

subjectПоследнее обновление: апр. 22, 2020
account_circleАвтор: сотрудник Google

1. Прежде чем вы начнете

Приложения App Engine легко создавать, легко поддерживать и легко масштабировать по мере изменения потребностей в трафике и хранении данных. App Engine не требует обслуживания серверов. Вы просто загружаете свое приложение, и оно готово к работе.

Приложения App Engine автоматически масштабируются в зависимости от входящего трафика. Балансировка нагрузки, микросервисы, авторизация, базы данных SQL и NoSQL, кэширование памяти, разделение трафика, ведение журнала, поиск, управление версиями, развертывание и откат, а также сканирование безопасности поддерживаются изначально и имеют широкие возможности настройки.

Стандартная среда App Engine и гибкая среда App Engine поддерживают множество языков программирования, включая Java, Python, PHP, NodeJS и Go. Две среды дают разработчикам максимальную гибкость в отношении того, как ведет себя их приложение. Каждая среда имеет определенные сильные стороны. Дополнительные сведения см. в разделе Выбор среды App Engine .

Вы научитесь развертывать приложение Spring Boot в стандартной среде App Engine. Стандартная среда масштабируется до нуля, когда ее никто не использует, и автоматически масштабируется!

Предпосылки

  • Знание языка программирования Java и инструментов
  • Знание стандартных текстовых редакторов Linux, таких как Vim, Emacs и nano.

Что ты будешь делать

  • Как создать Java-приложение Spring Boot в App Engine

Что вам понадобится

  • Облачный проект Google
  • Браузер, например Google Chrome

2. Настройка и требования

Самостоятельная настройка среды

  1. Войдите в Cloud Console и создайте новый проект или повторно используйте существующий. (Если у вас еще нет учетной записи Gmail или G Suite, ее необходимо создать .)

Запомните идентификатор проекта, уникальное имя для всех проектов Google Cloud (имя выше уже занято и не будет работать для вас, извините!). Позже в этой кодовой лаборатории он будет упоминаться как PROJECT_ID .

  1. Затем вам нужно включить выставление счетов в Cloud Console, чтобы использовать ресурсы Google Cloud.

Выполнение этой лаборатории кода не должно стоить вам больше нескольких долларов, но может быть больше, если вы решите использовать больше ресурсов или оставите их включенными.

Новые пользователи Google Cloud имеют право на бесплатную пробную версию за 300 долларов .

Облачная оболочка

Вы будете использовать Cloud Shell — среду командной строки, работающую в Google Cloud.

Активировать облачную оболочку

  1. В облачной консоли нажмите « Активировать Cloud Shell ». .

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

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

Эта виртуальная машина загружена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог размером 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`
gcloud config list project

Вывод команды

[core]
project = <PROJECT_ID>

Если это не так, вы можете установить его с помощью этой команды:

gcloud config set project <PROJECT_ID>

Вывод команды

Updated property [core/project].

3. Создайте новое веб-приложение Spring Boot

После запуска Cloud Shell вы можете использовать командную строку для создания нового приложения Spring Boot с помощью Spring Initializr.

$ curl https://start.spring.io/starter.tgz \
  -d bootVersion=2.1.8.RELEASE \
  -d dependencies=web \
  -d baseDir=gae-standard-example | tar -xzvf -
$ cd gae-standard-example

4. Обновить Maven pom.xml

Есть два способа развернуть серверное приложение Java — либо с помощью подключаемого модуля Maven App Engine или подключаемого модуля Gradle App Engine, либо путем развертывания каталога war пакета. Вы будете использовать подключаемый модуль Maven App Engine для развертывания приложения.

Добавить подключаемый модуль Maven App Engine

Обновите pom.xml , включив в него подключаемый модуль Google Cloud, упрощающий процесс развертывания. Вы можете использовать Vim, nano или Emacs для редактирования файла.

пом.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" ...>
  ...
 
<build>
   
<plugins>
      ...
     
<plugin>
       
<groupId>com.google.cloud.tools</groupId>
       
<artifactId>appengine-maven-plugin</artifactId>
       
<version>2.1.0</version>
       
<configuration>
         
<version>1</version>
         
<projectId>GCLOUD_CONFIG</projectId>
       
</configuration>
     
</plugin>
      ...
   
</plugins>
 
</build>
</project>

5. Добавить дескриптор App Engine

  1. Чтобы развернуть приложение в стандартной среде App Engine, необходимо создать новый файл дескриптора src/main/appengine/app.yaml .
$ mkdir -p src/main/appengine/
$ touch src/main/appengine/app.yaml
  1. Отредактируйте файл src/main/appengine/app.yaml и добавьте следующее содержимое:

src/main/appengine/app.yaml

runtime: java11
instance_class
: F4

6. Добавить контроллер

Добавьте новый контроллер, который возвращает "hello world!" в DemoApplication.java .

src/main/java/com/example/demo/DemoApplication.java

package com.example.demo;

...

// Add imports
import org.springframework.web.bind.annotation.*;

@SpringBootApplication
@RestController
public class DemoApplication {
 
public static void main(String[] args) {
   
SpringApplication.run(DemoApplication.class, args);
 
}

 
@GetMapping("/")
 
public String hello() {
   
return "hello world!";
 
}
}

7. Локально запустить приложение

  1. Вы можете запустить приложение Spring Boot с помощью плагина Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
  1. После запуска приложения нажмите « Веб-просмотр ». на панели инструментов Cloud Shell и выберите Preview на порту 8080 .

Откроется вкладка в вашем браузере и подключится к серверу, который вы запустили.

8. Разверните приложение в App Engine

  1. Сначала инициализируйте проект, чтобы иметь возможность запускать приложения App Engine. Кроме того, инициализируйте проект для запуска в центральном регионе США.
$ gcloud app create --region us-central
You are creating an app for project [...].
WARNING: Creating an App Engine application for a project is irreversible and the region
cannot be changed. More information about regions is at
https://cloud.google.com/appengine/docs/locations
  1. Затем разверните приложение в стандартной среде App Engine, запустив mvn appengine:deploy .
$ ./mvnw -DskipTests package appengine:deploy
... first time deploy may take a couple of minutes
  1. После развертывания приложения вы можете посетить его, открыв http://<project-id>.appspot.com в веб-браузере или используя следующую команду в Cloud Shell:
$ gcloud app browse
... [It may print out the URL for your app]

9. Поздравления

Вы научились писать свое первое веб-приложение App Engine!

Учить больше