Deploy Spring Boot REST API, Full Stack Applications and Microservices to Pivotal Cloud Foundry (PCF)
Learn PCF Fundamentals? Yes. Deploy REST API to PCF? Yes. Deploy Full Stack to PCF? Yes. Of Course. Hands-on? Of course.
Do you have ZERO experience with Pivotal Cloud Foundry (PCF)? No Problem.
Do you want to learn to Deploy Java Spring Boot Applications and Microservices to Pivotal Cloud Foundry (PCF) with an easy to learn, step by step approach?
Are you ready to learn about the cloud with Pivotal Cloud Foundry (PCF) and take the next step in your programming career?
Do you want to join 250,000+ learners having Amazing Learning Experiences with in28Minutes?
Look No Further!
- Video - Docker in 5 Steps
- Video - Spring in 10 Steps
- Video - Spring Boot in 10 Steps
- Video - JPA/Hibernate in 10 Steps
- Video - React in 10 Steps
- Article - Getting started with React and Spring Boot - Full Stack
- Article - Using Spring Security and JWT with React and Spring Boot
- Node v8+ for npm
- Visual Studio Code - Latest Version
- Java 8+
- Eclipse - Oxygen+ - (Embedded Maven From Eclipse)
- Git
- Docker
- ELB CLI
- Playlist - Installing Java, Eclipse & Embedded Maven
- Playlist - Installing Node Js (npm) & Visual Studio Code
- Node JS and NPM
- Visual Studio Code
- Eclipse and Embedded Maven
- Troubleshooting Guide - https://github.com/in28minutes/in28minutes-initiatives/tree/master/The-in28Minutes-TroubleshootingGuide-And-FAQ#tip--troubleshooting-embedded-maven-in-eclipse
- PDF - https://github.com/in28minutes/SpringIn28Minutes/blob/master/InstallationGuide-JavaEclipseAndMaven_v2.pdf
- GIT Repository For Installation - https://github.com/in28minutes/getting-started-in-5-steps
******* Course Overview *******
How about learning PCF (Pivotal Cloud Foundry) deploying Spring Applications to Cloud using Pivotal Cloud Foundry?
Pivotal Cloud Foundry (PCF) provides a great cloud native platform to deploy Spring Boot Applications.
Spring Boot is the No 1 Java Framework to develop REST API and Microservices.
In this course, we deploy a variety of Spring Boot Applications to the Cloud:
- REST APIs - Hello World and Todo - Jar
- Todo Web Application War
- Full Stack Application with React and Spring Boot
- CCS and CES Microservices
- Route Services
This course would be a perfect first step as an introduction to PCF and the Cloud.
You will be using deploying a variety of projects to Pivotal Cloud Foundry (PCF) . These projects are created with React (Frontend Framework), Spring Boot (REST API Framework), Spring (Dependency Management), Spring Security (Authentication and Authorization - Basic and JWT), BootStrap (Styling Pages), Maven (dependencies management), Node (npm), Visual Studio Code (TypeScript IDE), Eclipse (Java IDE) and Tomcat Embedded Web Server. We will help you set up each one of these.
- You will Learn the Fundamentals of Pivotal Cloud Foundry ( PCF ) from Zero, no previous experience required
- You will learn to deploy Spring Boot REST API to Pivotal Cloud Foundry ( PCF )
- You will learn to deploy Java, Spring Boot Full Stack Applications to Pivotal Cloud Foundry ( PCF )
- You will be using a number of PCF Services - Databases, Spring Cloud Services including Service Registry, Config Server and Hystrix .
- You will learn how to Auto Scale applications based on load as well as deploy multiple instances behind a load balancer using Pivotal Cloud Foundry.
- You will Join 250,000 Learners having AMAZING LEARNING Experiences with in28Minutes
- You have an attitude to learn while having fun :)
- You have some programming experience with Java, Spring and Spring Boot
- You DO NOT need to have any experience with Pivotal Cloud Foundry
- We will help you install Eclipse, Visual Studio Code, Git client, Docker Desktop and Node JS (for npm)
- You are a Java Spring Boot developer getting started with the Cloud
- You want to get your Java applications deployed to PCF (Pivotal Cloud Foundry) Quickly
- You are a Java Developer and You are curious about PCF and the Cloud
- You want to learn to deploy a Java Spring Boot full stack application to PCF (Pivotal Cloud Foundry)
- You want to learn to deploy Spring Boot Microservices with Service Registry, Config Server, Distributed Tracing and Load Balancing to PCF (Pivotal Cloud Foundry)
- 00 Step 01 - Deploy Spring Boot Applications to Pivotal Cloud Foundry - Course Overview
- 00 Step 02 - Deploy Spring Boot Applications to Pivotal Cloud Foundry - Getting Started
- 01 Step 01 - Getting Started with PCF - Pivotal Cloud Foundry
- 01 Step 02 - Creating Pivotal Web Services Accounts and Understanding Org and Space
- 01 Step 03 - Installing CF CLI - Cloud Foundry Command Line Interface
- 01 Step 04 - Importing Spring Boot Projects into our IDE
- 02 Step 01 - Setting up 01 Spring Boot Hello World Rest API in Local
- 02 Step 02 - Deploy 01 Hello World Rest API to Pivotal Cloud Foundry - PCF
- 02 Step 03 - Exploring Cloud Foundry CLI - apps, routes, start, stop and restart
- 02 Step 04 - Creating Application Manifest manifest yaml for Spring Boot App
- 02 Step 05 - Understanding Pivotal Cloud Foundry - PCF - Concepts - Droplet and Build Packs
- 02 Step 06 - Configure PCF Java Build Pack for Spring Boot Application
- 03 Step 01 - Setting up 01 Spring Boot Todo Web Application in Local
- 03 Step 02 - Deploy Spring Boot Todo Web Application to Pivotal Cloud Foundry - PCF
- 04 Step 01 - Code Review of 03 Todo Web Application MySQL
- 04 Step 02 - Running MySQL as Docker Container on Local
- 04 Step 03 - Connect Spring Boot Todo Web App to MySQL on Local
- 04 Step 04 - Exploring PWS UI and Create Service for Todo Database on PCF
- 04 Step 05 - Connect Spring Boot Web App with MySQL Database on PCF
- 04 Step 06 - Understanding PCF Spring Auto Configuration
- 05 Step 01 - Exploring 04 Java Full Stack Spring Boot React App
- 05 Step 02 - Running React Frontend in Local
- 05 Step 03 - Deploying Java REST API Backend to Pivotal Cloud Foundry
- 05 Step 04 - Building React Frontend Code for Pivotal Cloud Foundry
- 05 Step 05 - Exploring Pivotal Cloud Foundry UI
- 06 Step 04 - Overview of CCS and CES Spring Boot Microservices
- 06 Step 05 - Push CCS and CES Microservices to Pivotal Cloud Foundry
- 06 Step 06 - Run CCS and CES Microservices on PCF - Environment Variables and Instance Config
- 06 Step 07 - Scaling CCS and CES Microservices on Pivotal Cloud Foundry
- 06 Step 08 - Exploring Distributed Tracing on Pivotal Cloud Foundry
- 07 Step 01 - Understanding the need for Service Registry and Set up Eureka Server
- 07 Step 02 - Register CES Microservice with Eureka Service on Local
- 07 Step 03 - Register CCS Microservice with Eureka Service and connect CES Microservice
- 07 Step 04 - Create Service Registry on Pivotal Cloud Foundry and deploy CCS and CES
- 08 Step 01 - Auto Scaling Microservices on Pivotal Cloud Foundry
- 08 Step 02 - Disable Auto Scaling on Pivotal Cloud Foundry
- 09 Step 01 - Understanding Route Services - Code Review and Deploy
- 09 Step 02 - Binding Route Services with Spring Boot Microservices
- 09 Step 03 - Disable Route Services on PCF
- 09 Step 04 - Quick Review of Pivotal Cloud Foundry
- 10 Step 01 - Understanding Centralized Configuration for Microservices
- 10 Step 02 - Configure CCS Microservice to talk to Spring Cloud Config Server
- 10 Step 03 - Create a Github Repo for Spring Cloud Config Server
- 10 Step 04 - Configure Refresh Scope for Spring Boot Application
- 10 Step 05 - Create Cloud Config Service on Pivotal Cloud Foundry
- 10 Step 06 - Test Cloud Config Service on Pivotal Cloud Foundry
- 11 Step 01 - Setting up Hystrix Circuit Breaker on Local
- 11 Step 02 - Create Circuit Breaker Service and Deploy App on Pivotal Cloud Foundry
- 11 Step 03 - Understand Hystrix Open and Close Circuit Features
- 12 Step 01 - Understand PCF Resilience and configure Health Checks for Microservices
- 12 Step 02 - Setting up Direct Communication between Microservice Containers
- 12 Step 03 - Deploying Containers to PCF
- 12 Step 04 - Blue Green Deployment on Pivotal Cloud Foundry
- 12 Step 05 - Thank You
cf --version
cf login
cf help -a
cf help login
cf login -a https://api.run.pivotal.io
cf target
cf help target
cf push hello-world-rest-api
cf push hello-world-rest-api -r hello-world-rest-api-001.cfapps.io
cf push hello-world-rest-api --random-route
cf logout
cf login -a https://api.run.pivotal.io
cf push hello-world-rest-api -p target/hello-world-rest-api.jar
cf apps
cf routes
cf map-route hello-world-rest-api-ranga-101 cfapps.io --hostname hello-world-rest-api
cf map-route hello-world-rest-api cfapps.io --hostname hello-world-rest-api-ranga-101
cf spaces
cf orgs
cf stop hello-world-rest-api
cf start hello-world-rest-api
cf restart hello-world-rest-api
cf create-app-manifest hello-world-rest-api
cf v3-droplets hello-world-rest-api
ls target/hello-world-rest-api.jar
docker run --detach --env MYSQL_ROOT_PASSWORD=dummypassword --env MYSQL_USER=todos-user --env MYSQL_PASSWORD=dummytodos --env MYSQL_DATABASE=todos --name mysql --publish 3306:3306 mysql:5.7
docker container list
docker stop 9a8dfcfa01d4
docker rm 9a8dfcfa01d4
cf services
cf help create-service
cf v3-delete todo-web-application-mysql
cf scale currency-exchange-service -i 2
cf install-plugin ~/Downloads/autoscaler-for-pcf-cliplugin-macosx64-binary-2.0.199
cf autoscaling-apps
cf autoscaling-events currency-exchange-service
cf routes
cf events currency-conversion-service
cf events currency-exchange-service
cf disable-autoscaling currency-exchange-service
cf set-env currency-conversion-service CURRENCY_EXCHANGE_URI http://currency-exchange-service-ranga-101.cfapps.io
cf env currency-conversion-service
cf help -a
cf unset-env currency-conversion-service CURRENCY_EXCHANGE_URI
cf create-user-provided-service spring-boot-route-service -r https://spring-boot-route-service-ranga-101.cfapps.io
cf routes
cf bind-route-service cfapps.io --hostname currency-exchange-service-ranga-101 spring-boot-route-service
cf bind-route-service cfapps.io --hostname currency-conversion-service-ranga-101 spring-boot-route-service
cf unbind-route-service cfapps.io --hostname currency-exchange-service-ranga-101 spring-boot-route-service
cf unbind-route-service cfapps.io --hostname currency-conversion-service-ranga-101 spring-boot-route-service
cf stop spring-boot-route-service
cd /in28Minutes/git/config-server
git init
git add *
git status
git commit -m "first commit"
git remote add origin https://github.com/in28minutes/config-server.git
git push -u origin master
cf create-service p-config-server trial config-server -c config-server.json
cf update-service config-server -c '{ "count":1, "git":{ "uri":"https://github.com/in28minutes/dev-config-server-test.git", "label":"master", "searchPaths":"currency-exchange-service" }}'
cf set-env currency-conversion-service hystrix.command.default.circuitBreaker.requestVolumeThreshold 2
cf set-health-check currency-conversion-service http --endpoint /manage/health
cf set-health-check currency-conversion-service http --endpoint /manage/health-error
cf set-health-check currency-conversion-service http --endpoint /manage/health
cf set-env currency-exchange-service spring.cloud.services.registrationMethod direct
cf network-policies
cf remove-network-policy currency-conversion-service --destination-app currency-exchange-service --protocol tcp --port 8080
cf network-policies
cf unset-env currency-exchange-service spring.cloud.services.registrationMethod
cf map-route hello-world-rest-api-green cfapps.io --hostname hello-world-rest-api-ranga-101
cf unmap-route hello-world-rest-api cfapps.io --hostname hello-world-rest-api-ranga-101
- Courtesy http://viz-js.com/
digraph architecture {
rankdir = TB;
node[shape=component]
Git[shape=cylinder]
{rank=same; CurrencyConversionService, CurrencyExchangeService};
CurrencyExchangeService -> SpringCloudConfigServer;
CurrencyConversionService -> SpringCloudConfigServer;
SpringCloudConfigServer -> Git
}
digraph architecture {
rankdir = TB;
node[shape=component]
{rank=same; CurrencyConversionService, CurrencyExchangeService};
CurrencyExchangeService -> EurekaNamingServer;
CurrencyConversionService -> EurekaNamingServer;
}
digraph architecture {
rankdir = TB;
node[shape=component]
{rank=same; CurrencyExchangeService1, CurrencyExchangeService2, CurrencyExchangeService3};
{rank=same; LoadBalancer };
LoadBalancer -> CurrencyExchangeService1
LoadBalancer -> CurrencyExchangeService2
LoadBalancer -> CurrencyExchangeService3
CurrencyConversionService -> LoadBalancer
}
graph architecture {
node[style=filled,color="#59C8DE"]
//node [style=filled,color="#D14D28", fontcolor=white];
rankdir = TB
node[shape=record, width=2.5]
edge [width=0]
graph [pad=".75", ranksep="0.05", nodesep="0.25"];
Applications -- CloudFoundry [style=invis]
CloudFoundry -- CloudProvider [style=invis]
#OS -- Hardware [style=invis]
CloudProvider[label=<Cloud Provider <BR /><FONT POINT-SIZE="10"> AWS or Azure or GCP or Others</FONT>>]
}
graph architecture {
node[style=filled,color="#59C8DE"]
//node [style=filled,color="#D14D28", fontcolor=white];
rankdir = TB
node[shape=record, width=2.5]
edge [width=0]
graph [pad=".75", ranksep="0.05", nodesep="0.25"];
Applications -- PivotalCloudFoundry [style=invis]
PivotalCloudFoundry -- CloudProvider [style=invis]
#OS -- Hardware [style=invis]
CloudProvider[label=<AWS>]
}
digraph architecture {
rankdir=LR;
node[shape=record]
User -> LoadBalancer -> GoRouter -> Cell
subgraph Cell {
{rank=same; App, Cell};
}
}
hello-world-rest-api-ranga-101.cfapps.io - Blue - Hello World v3 hello-world-rest-api-green hello-world-rest-api-ranga-101-green.cfapps.io Green - Hello World v4
rangaraokaranam$ cf apps
Getting apps in org currency-services / space development as ranga@in28minutes.com...
OK
name requested state instances memory disk urls
currency-conversion-service stopped 0/2 512M 1G currency-conversion-service-ranga-101.cfapps.io
currency-exchange-service stopped 0/2 512M 1G currency-exchange-service-ranga-101.cfapps.io
hello-world-rest-api stopped 0/1 1G 1G hello-world-rest-api-sweet-panda.cfapps.io
hello-world-rest-api-green stopped 0/1 1G 1G hello-world-rest-api-ranga-101.cfapps.io, hello-world-rest-api-ranga-101-green.cfapps.io
rest-api-full-stack stopped 0/1 1G 1G rest-api-full-stack-ranga-101.cfapps.io
spring-boot-route-service stopped 0/1 512M 1G spring-boot-route-service-ranga-101.cfapps.io
todo-app-react-frontend stopped 0/1 64M 1G todo-app-react-frontend-ranga-101.cfapps.io
todo-rest-api stopped 0/1 1G 1G todo-rest-api-terrific-mandrill.cfapps.io
todo-web-application-h2 stopped 0/1 1G 1G todo-web-application-h2-ranga-101.cfapps.io
todo-web-application-mysql stopped 0/1 1G 1G todo-web-application-mysql-ranga-101.cfapps.io
rangaraokaranam$ cf routes
Getting routes for org currency-services / space development as ranga@in28minutes.com ...
space host domain port path type apps service
development hello-world-rest-api-sweet-panda cfapps.io hello-world-rest-api
development hello-world-rest-api-ranga-101 cfapps.io hello-world-rest-api-green
development todo-web-application-h2-ranga-101 cfapps.io todo-web-application-h2
development todo-web-application-mysql-ranga-101 cfapps.io todo-web-application-mysql
development rest-api-full-stack-ranga-101 cfapps.io rest-api-full-stack
development todo-app-react-frontend-ranga-101 cfapps.io todo-app-react-frontend
development currency-exchange-service-ranga-101 cfapps.io currency-exchange-service
development currency-conversion-service-ranga-101 cfapps.io currency-conversion-service
development spring-boot-route-service-ranga-101 cfapps.io spring-boot-route-service
development todo-rest-api-terrific-mandrill cfapps.io todo-rest-api
development hello-world-rest-api-ranga-101-green cfapps.io hello-world-rest-api-green
rangaraokaranam$ cf services
Getting services in org currency-services / space development as ranga@in28minutes.com...
name service plan bound apps last operation broker upgrade available
autoscale-development app-autoscaler standard currency-exchange-service create succeeded app-autoscaler
config-server p-config-server trial currency-conversion-service create succeeded p-spring-cloud-services
hystrix-dashboard p-circuit-breaker-dashboard trial currency-conversion-service create succeeded p-spring-cloud-services
naming-server p-service-registry trial currency-conversion-service, currency-exchange-service create succeeded p-spring-cloud-services
spring-boot-route-service user-provided
todo-database cleardb spark todo-web-application-h2, todo-web-application-mysql create succeeded appdirect
rangaraokaranam$
- Refer our TroubleShooting Guide - https://github.com/in28minutes/in28minutes-initiatives/tree/master/The-in28Minutes-TroubleshootingGuide-And-FAQ
in28Minutes is creating amazing solutions for you to learn Spring Boot, Full Stack and the Cloud - Docker, Kubernetes, AWS, React, Angular etc. - Check out all our courses here