Een Spring Boot-applicatie implementeren in Cloud Foundry

1. Overzicht

Het implementeren van een Spring Boot-applicatie in Cloud Foundry is een eenvoudige oefening. In deze tutorial laten we u zien hoe u dit moet doen.

2. Spring Cloud-afhankelijkheden

Aangezien dit project nieuwe afhankelijkheden vereist voor het Spring Cloud-project, zullen we de Spring Cloud Dependencies BOM toevoegen:

   org.springframework.cloud spring-cloud-dependencies Greenwhich.RELEASE pom import 

We kunnen de nieuwste versie van het spring-cloud-afhankelijkheden bibliotheek op Maven Central.

Nu willen we een aparte build voor de Cloud Foundry onderhouden, dus we maken een profiel met de naam cloudfoundry in de Maven pom.xml.

We zullen ook compileruitsluitingen en de Spring Boot-plug-in toevoegen om de naam van het pakket te configureren:

   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 

We willen ook de cloudspecifieke bestanden uitsluiten van de normale build, dus we voegen een globale profieluitsluiting toe aan de Maven-compilerplug-in:

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

Vervolgens moeten we de Spring Cloud Starter- en de Spring Cloud Connectors-bibliotheken toevoegen, die ondersteuning bieden voor Cloud Foundry:

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

3. Cloud Foundry-configuratie

Om deze tutorial te doorlopen, moeten we ons hier registreren voor een proefversie of de vooraf geconfigureerde ontwikkelomgeving voor Native Linux of Virtual Box downloaden.

Verder moet de Cloud Foundry CLI worden geïnstalleerd. Instructies zijn hier.

Na registratie bij een Cloud Foundry-provider wordt de API-URL beschikbaar gesteld (u kunt ernaar terugkeren door het Hulpmiddelen optie aan de linkerkant).

Met de applicatiecontainer kunnen we services aan applicaties binden. Laten we vervolgens inloggen op de Cloud Foundry-omgeving:

cf login -a 

De Cloud Foundry Marketplace is een catalogus met services zoals databases, berichten, e-mail, monitoring, logboekregistratie en nog veel meer. De meeste services bieden een gratis abonnement of een proefabonnement.

Laten we op de Marketplace naar "MySQL" zoeken en een service voor onze applicatie maken:

cf marktplaats | grep MySQL
> clearb spark, boost *, amp *, shock * Hoogst beschikbare MySQL voor uw apps. 

De uitvoer bevat de services met "MySQL" in de beschrijving. Op PCF wordt de MySQL-service genoemd cleardb en niet-vrije abonnementen zijn gemarkeerd met een asterisk.

Vervolgens geven we de details van een service weer met behulp van:

cf marktplaats -s cleardb
> beschrijving serviceplan gratis of betaald spark Geweldig om aan de slag te gaan en uw apps te ontwikkelen gratis boost Het beste voor lichte productie of het opzetten van uw applicaties betaalde versterker Voor apps met matige gegevensvereisten betaalde schok Ontworpen voor apps waar u echte MySQL-betrouwbaarheid, kracht en doorvoer moet betalen

Nu maken we een gratis MySQL-service-instantie met de naam spring-bootstrap-db:

cf create-service cleardb spark spring-bootstrap-db

4. Applicatieconfiguratie

Vervolgens voegen we een @Configuratie geannoteerde klasse die zich uitbreidt AbstractCloudConfig om een Databron in het pakket met de naam org.baeldung.cloud.config:

@Configuration @Profile ("cloud") openbare klasse CloudDataSourceConfig breidt AbstractCloudConfig uit {@Bean openbare DataSource dataSource () {return connectionFactory (). DataSource (); }}

Toevoegen @Profile ("cloud") zorgt ervoor dat de Cloud Connector niet actief is wanneer we lokaal testen. We voegen ook toe @ActiveProfiles (profielen = {"lokaal"}) naar de Integratietesten.

Bouw vervolgens de applicatie met:

mvn schone installatie spring-boot: herverpakken -P cloudfoundry

We moeten ook een manifest.yml bestand, om de service aan de applicatie te binden.

Meestal plaatsen we de manifest.yml bestand in de projectmap, maar in dit geval maken we een cloudfoundry map, aangezien we de implementatie bij meerdere cloud-native providers gaan demonstreren:

--- toepassingen: - naam: spring-boot-bootstrap geheugen: 768M random-route: true pad: ../target/spring-boot-bootstrap-cf.jar env: SPRING_PROFILES_ACTIVE: cloud, mysql services: - spring-bootstrap -db

5. Inzet

Het implementeren van de applicatie is nu net zo eenvoudig als:

cd cloudfoundry cf push

Cloud Foundry gebruikt het Java-buildpack om de applicatie te implementeren en een willekeurige route naar de applicatie te creëren.

We kunnen de laatste paar vermeldingen in het logbestand bekijken met:

cf logs spring-boot-bootstrap --recent

Of we kunnen het logbestand volgen:

cf logs spring-boot-bootstrap

Ten slotte hebben we de routenaam nodig om de applicatie te testen:

cf app spring-boot-bootstrap
> naam: spring-boot-bootstrap aangevraagde staat: gestarte routes: spring-boot-bootstrap-delightful-chimpanzee.cfapps.io laatst geüpload: do 23 aug 08:57:20 SAST 2018 stack: cflinuxfs2 buildpacks: java-buildpack = v4 .15-offline -... type: webinstances: 1/1 geheugengebruik: 768M status sinds cpu-geheugenschijf # 0 draait op 2018-08-23T06: 57: 57Z 0,5% 290,9M van 768M 164,7M van 1G 

Als u de volgende opdracht uitvoert, wordt een nieuw boek toegevoegd:

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

En met deze opdracht worden alle boeken weergegeven:

curl -i /// api / books #OF 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. Schalen van de applicatie

Ten slotte is het schalen van een applicatie op Cloud Foundry net zo eenvoudig als het gebruik van de schaal opdracht:

cf scale spring-cloud-bootstrap-cloudfoundry Opties: -i -m # Zoals 512M of 1G -k # Zoals 1G of 2G -f # Forceer herstart zonder prompt

Vergeet niet om de applicatie te verwijderen als we deze niet meer nodig hebben:

cf verwijder spring-cloud-bootstrap-cloudfoundry

7. Conclusie

In dit artikel hebben we de Spring Cloud-bibliotheken besproken die de ontwikkeling van een cloud-native applicatie met Spring Boot vereenvoudigen. De implementatie met de Cloud Foundry CLI is hier goed gedocumenteerd.

Extra plug-ins voor de CLI zijn beschikbaar in de repository voor plug-ins.

De volledige broncode van onze voorbeelden hier is, zoals altijd, op GitHub.