Implementering af en Spring Boot-applikation til Cloud Foundry

1. Oversigt

Implementering af en Spring Boot-applikation til Cloud Foundry er en simpel øvelse. I denne vejledning viser vi dig, hvordan du gør det.

2. Spring Cloud-afhængigheder

Da dette projekt kræver nye afhængigheder til Spring Cloud-projektet, tilføjer vi Spring Cloud Dependencies BOM:

   org.springframework.cloud spring-cloud-afhængigheder Greenwhich.RELEASE pom import 

Vi kan finde den nyeste version af forår-sky-afhængigheder bibliotek på Maven Central.

Nu vil vi opretholde en separat build til Cloud Foundry, så vi opretter en profil med navnet skyfoundry i Maven pom.xml.

Vi tilføjer også kompilereekskluderinger og Spring Boot-plugin for at konfigurere navnet på pakken:

   src / main / resources ** / logback.xml org.springframework.boot spring-boot-maven-plugin $ {project.name} -cf org.apache.maven.plugins maven-compiler-plugin ** / cloud / config / * .java 

Vi vil også ekskludere de skyspecifikke filer fra den normale build, så vi tilføjer en global profilekskludering til Maven-compiler-plugin:

   org.apache.maven.plugins maven-compiler-plugin ** / cloud / *. java 

Derefter skal vi tilføje Spring Cloud Starter og Spring Cloud Connectors-bibliotekerne, som giver support til Cloud Foundry:

 org.springframework.cloud spring-cloud-starter org.springframework.boot spring-boot-starter-cloud-connectors 

3. Cloud Foundry Configuration

For at gennemgå denne vejledning skal vi registrere os til en prøve her eller downloade det forudkonfigurerede udviklingsmiljø til Native Linux eller Virtual Box.

Desuden skal Cloud Foundry CLI installeres. Instruktioner er her.

Efter registrering hos en Cloud Foundry-udbyder gøres API-URL'en tilgængelig (du kan vende tilbage til den ved at følge Værktøjer på venstre side).

Applikationscontaineren giver os mulighed for at binde tjenester til applikationer. Lad os derefter logge ind i Cloud Foundry-miljøet:

cf login -a 

Cloud Foundry Marketplace er et katalog over tjenester som databaser, messaging, e-mail, overvågning, logning og meget mere. De fleste tjenester leverer en gratis eller prøveplan.

Lad os søge på Marketplace efter “MySQL” og oprette en service til vores applikation:

jf. markedsplads | grep MySQL
> cleardb gnist, boost *, amp *, shock * Meget tilgængelig MySQL til dine apps. 

Outputtet viser tjenesterne med “MySQL” i beskrivelsen. På PCF er MySQL-tjenesten navngivet cleardb og ikke-gratis planer er markeret med en stjerne.

Derefter viser vi detaljerne i en tjeneste ved hjælp af:

cf markedsplads -s cleardb
> serviceplanbeskrivelse gratis eller betalt gnist Fantastisk til at komme i gang og udvikle dine apps gratis boost Bedst til let produktion eller iscenesættelse af dine applikationer betalt forstærker For apps med moderat datakrav betalt chok Designet til apps, hvor du har brug for ægte MySQL-pålidelighed, betalt strøm og gennemstrømning

Nu opretter vi en gratis MySQL-serviceinstans med navnet spring-bootstrap-db:

cf create-service cleardb gnistfjeder-bootstrap-db

4. Konfiguration af applikation

Dernæst tilføjer vi en @Konfiguration kommenteret klasse, der udvides AbstraktCloudConfig at oprette en Datakilde i den navngivne pakke org.baeldung.cloud.config:

@Configuration @Profile ("cloud") offentlig klasse CloudDataSourceConfig udvider AbstractCloudConfig {@Bean public DataSource dataSource () {return connectionFactory (). DataSource (); }}

Tilføjer @Profile (“sky”) sikrer, at Cloud Connector ikke er aktiv, når vi foretager lokal test. Vi tilføjer også @ActiveProfiles (profiler = {“lokal”}) til integrationstestene.

Bygg derefter applikationen med:

mvn ren installation spring-boot: ompakning -P cloudfoundry

Vi er også nødt til at give en manifest.yml fil for at binde tjenesten til applikationen.

Vi placerer normalt manifest.yml fil i projektmappen, men i dette tilfælde opretter vi en skyfoundry mappe, da vi demonstrerer implementering til flere cloud-native udbydere:

--- applikationer: - navn: spring-boot-bootstrap-hukommelse: 768M tilfældig rute: sand sti: ../target/spring-boot-bootstrap-cf.jar env: SPRING_PROFILES_ACTIVE: cloud, mysql services: - spring-bootstrap -db

5. Implementering

Implementering af applikationen er nu lige så let som:

cd cloudfoundry cf push

Cloud Foundry bruger Java buildpack til at implementere applikationen og oprette en tilfældig rute til applikationen.

Vi kan se de sidste par poster i logfilen ved hjælp af:

cf logs spring-boot-bootstrap --recent

Eller vi kan hale logfilen:

cf logs spring-boot-bootstrap

Endelig har vi brug for rutenavnet for at teste applikationen:

cf app spring-boot-bootstrap
> navn: spring-boot-bootstrap anmodet tilstand: startede ruter: spring-boot-bootstrap-delightful-chimpanzee.cfapps.io sidst uploadet: Thu 23 Aug 08:57:20 SAST 2018 stack: cflinuxfs2 buildpacks: java-buildpack = v4 .15-offline -... type: webforekomster: 1/1 hukommelsesforbrug: 768M tilstand siden cpu-hukommelsesdisk # 0 kører 2018-08-23T06: 57: 57Z 0,5% 290,9M af 768M 164,7M af 1G 

Udførelse af følgende kommando tilføjer en ny bog:

curl -i --forespørgsel POST \ --header "Content-Type: application / json" \ --data '{"title": "The Player of Games", "author": "Iain M. Banks"}' \ /// api / books #OR http POST /// api / books author = "Iain M. Banks" 

Og denne kommando vil liste alle bøger:

krølle -i /// api / books #OR http /// api / books
> HTTP / 1.1 200 OK [{"author": "Iain M. Banks", "id": 1, "title": "Player of Games"}, {"author": "JRR Tolkien", "id": 2, "title": "The Hobbit"}] 

6. Skalering af applikationen

Endelig er skalering af en applikation på Cloud Foundry så enkel som at bruge vægt kommando:

cf skala spring-cloud-bootstrap-cloudfoundry Options: -i -m # Like 512M eller 1G -k # Like 1G eller 2G -f # Force genstart uden prompt

Husk at slette applikationen, når vi ikke længere har brug for det:

cf slet spring-cloud-bootstrap-cloudfoundry

7. Konklusion

I denne artikel dækkede vi Spring Cloud-bibliotekerne, der forenkler udviklingen af ​​en cloud-native applikation ved hjælp af Spring Boot. Implementering med Cloud Foundry CLI er veldokumenteret her.

Ekstra plugins til CLI er tilgængelige i plugin-lageret.

Den fulde kildekode for vores eksempler her er som altid over på GitHub.