Distribuere en Spring Boot-applikasjon til Google App Engine
1. Oversikt
I denne opplæringen viser vi hvordan du distribuerer en applikasjon fra vår Bootstrap en enkel applikasjon ved hjelp av Spring Boot-opplæringen til App Engine på Google Cloud Platform.
Som en del av dette vil vi:
- Konfigurer Google Cloud Platform Console og SDK
- Bruk Cloud SQL til å opprette en MySQL-forekomst
- Konfigurer applikasjonen for Spring Cloud GCP
- Distribuer applikasjonen til App Engine og test den
2. Google Cloud Platform Configuration
Vi kan bruke GCP-konsollen for å gjøre lokalmiljøet vårt klart for GCP. Vi finner installasjonsprosessen på det offisielle nettstedet.
La oss lage et prosjekt på GCP ved hjelp av GCP-konsollen:
gcloud init
Deretter la oss konfigurere prosjektnavnet:
gcloud config sett prosjekt baeldung-spring-boot-bootstrap
Deretter installerer vi App Engine-støtten og oppretter en App Engine-forekomst:
gcloud-komponenter installerer app-engine-java gcloud app oppretter
Applikasjonen vår må koble til en MySQL-database i Cloud SQL-miljøet. Siden Cloud SQL ikke gir et gratis nivå, må vi aktivere fakturering på GCP-kontoen.
Vi kan enkelt sjekke tilgjengelige nivåer:
gcloud sql tiers list
Før vi fortsetter, bør vi bruke GCP-nettstedet for å aktivere Cloud SQL Admin API.
Nå kan vi opprette en MySQL-forekomst og -database i Cloud SQL ved hjelp av Cloud Console eller SDK CLI. I løpet av denne prosessen velger vi regionen og gir et forekomstnavn og databasenavn. Det er viktig at appen og databaseinstansen er i samme region.
Siden vi skal distribuere appen til europe-vest2, la oss gjøre det samme for forekomsten:
# opprett forekomst gcloud sql-forekomster opprett \ baeldung-spring-boot-bootstrap-db \ --tier = db-f1-micro \ --region = europe-west2 # opprett database gcloud sql databaser opprette \ baeldung_bootstrap_db \ --instance = baeldung -spring-boot-bootstrap-db
3. Spring Cloud GCP-avhengigheter
Vår applikasjon vil trenge avhengigheter fra Spring Cloud GCP-prosjektet for sky-native API-ene. For dette, la oss bruke en Maven-profil som heter sky-gcp:
cloud-gcp org.springframework.cloud spring-cloud-gcp-starter 1.0.0.RELEASE org.springframework.cloud spring-cloud-gcp-starter-sql-mysql 1.0.0.RELEASE
Deretter legger vi til App Engine Maven-plugin:
com.google.cloud.tools appengine-maven-plugin 1.3.2
4. Programkonfigurasjon
La oss nå definere konfigurasjonen som lar applikasjonen bruke skyinnfødte ressurser som databasen.
Våren Cloud GCP bruker spring-cloud-bootstrap.properties for å bestemme søknadsnavnet:
spring.cloud.appId = baeldung-spring-boot-bootstrap
Vi bruker en vårprofil med navnet gcp for denne distribusjonen, og vi må konfigurere databasetilkoblingen. Derfor skaper vi src / main / resources / application-gcp.properties:
spring.cloud.gcp.sql.instance-connection-name = \ baeldung-spring-boot-bootstrap: europe-west2: baeldung-spring-boot-bootstrap-db spring.cloud.gcp.sql.database-name = baeldung_bootstrap_db
5. Implementering
Google App Engine har to Java-miljøer:
- de Standard miljø gir brygge og JDK8 og Fleksibel miljø gir bare JDK8 og
- Fleksibelt miljø er det beste alternativet for Spring Boot-applikasjoner.
Vi krever gcp og mysql Vårprofiler for å være aktive, så vi tilbyr SPRING_PROFILES_ACTIVE miljøvariabel til applikasjonen ved å legge den til distribusjonskonfigurasjonen i src / main / appengine / app.yaml:
kjøretid: java env: flex runtime_config: jdk: openjdk8 env_variables: SPRING_PROFILES_ACTIVE: "gcp, mysql" handlers: - url: /.* script: dette feltet er obligatorisk, men ignoreres manual_scaling: forekomster: 1
Nå, la oss bygge og distribuere applikasjonen ved hjelp av appengine maven plugin:
mvn ren pakke appengine: distribuere -P sky-gcp
Etter distribusjon kan vi se eller hale loggfiler:
# view gcloud app logs read # tail gcloud app logs tail
Nå, la oss bekrefte at søknaden vår fungerer ved å legge til en bok:
http POST //baeldung-spring-boot-bootstrap.appspot.com/api/books \ author = "Iain M. Banks"
Forventer følgende utgang:
HTTP / 1.1 201 {"author": "Iain M. Banks", "id": 1, "title": "Spilleren av spill"}
6. Skalering av applikasjonen
Standard skalering i App Engine er automatisk.
Det kan være bedre å begynne med manuell skalering til vi forstår kjøretidsoppførselen og tilhørende budsjetter og kostnader. Vi kan tildele ressurser til applikasjonen og konfigurere automatisk skalering i app.yaml:
# Ressurser for applikasjonsressurser: cpu: 2 memory_gb: 2 disk_size_gb: 10 volumes: - name: ramdisk1 volume_type: tmpfs size_gb: 0.5 # Automatic Scaling automatic_scaling: min_num_instances: 1 max_num_instances: 4 cool_down_period_sec: 180 cpu_utilization: target_utilization: 0
7. Konklusjon
I denne opplæringen:
- Konfigurert Google Cloud Platform og App Engine
- Opprettet en MySQL-forekomst med Cloud SQL
- Konfigurert Spring Cloud GCP for bruk av MySQL
- Implementerte vår konfigurerte Spring Boot-applikasjon, og
- Testet og skalert applikasjonen
Vi kan alltid se Googles omfattende App Engine-dokumentasjon for mer informasjon.
Den komplette kildekoden til eksemplene våre her er som alltid over på GitHub.