Deploying RESTful Service on Cloudfoundry
In this post, we will deploy RESTful service on Cloudfoundry using Pivotal Cloud Foundry (PCF) Dev. As creating a restful web service is not a part of this post, I already created employee-service which have a static backend and available for clone from GitHub.
Before deploying it on Cloudfoundry, let’s have a brief about it.
Cloudfoundry
Cloud Foundry is an open source cloud platform as a service (PaaS) on which developers can build, deploy, run and scale applications on public and private cloud models. It is VMware originally created by VMware and now it is part of Pivotal Software.
Now let’s set up lightweight PCF on our local workstation using PCF Dev, following below steps:
Step 1: Download and install cf-cli-installer_6.22.2_osx.pkg in a directory, for me it’s /Users/ArpitAggarwal/cloudfoundry
$ cd /Users/ArpitAggarwal/cloudfoundry/ $ sudo installer -pkg ./cf-cli-installer_6.22.2_osx.pkg -target /
Step 2: Test if Cloudfoundry CLI installed successfully:
$ cf help
Step 3: Next we will download and install PCF Dev in the same directory we created earlier, as follows:
$ cd /Users/ArpitAggarwal/cloudfoundry/ $ unzip pcfdev-v0.22.0+PCF1.8.2-osx.zip $ ./pcfdev-v0.22.0+PCF1.8.2-osx
Start 4: Start PCF Dev:
$ cd /Users/ArpitAggarwal/cloudfoundry/ $ cf dev start
Above command starts a single virtual machine on our workstation running PCF.
Step 5: Clone employee-service from GitHub in a directory, for me it’s /Users/ArpitAggarwal/
$ cd /Users/ArpitAggarwal/ $ git clone https://github.com/arpitaggarwal/empoyee-service.git
Step 6: Update the employee-service with manifest.yml:
$ cd /Users/ArpitAggarwal/employee-service $ touch manifest.yml
manifest.yml created above is used by PCF for deployment to local workstation or on public cloud.
Step 7: Copy the below content in manifest.yml:
--- applications: - name: empoyee-service memory: 1G random-route: true path: build/libs/empoyee-service-0.0.1.war buildpack: https://github.com/arpitaggarwal/java-buildpack.git
name attribute specified above is the name of an application.
path attribute is the directory location of an application.
buildpack attribute points to the java-buildpack, which is used by PCF for running JVM-based applications.
More about manifest.yml you can explore here.
Step 8: Next, we will build the application and push it to Cloudfoundry local workstation after login, as follows:
$ cd /Users/ArpitAggarwal/empoyee-service $ empoyee-service git:(master) ./gradlew clean build $ empoyee-service git:(master) ✗ cf login -a api.local.pcfdev.io --skip-ssl-validation API endpoint: api.local.pcfdev.io Email> user Password> pass $ cf push
cf push command specified above push an app or syncs changes to an existing app to the URL http://empoyee-service.local.pcfdev.io
Is application successfully deployed on Cloudfoundry?
Let’s verify it viewing the recent deployment logs where we can look server start up status, as follows:
$ cd /Users/ArpitAggarwal/empoyee-service $ cf logs empoyee-service --recent
We can also verify application deployment executing GET and POST request against it, as follows:
GET Request to get all employees:
curl -i -H "Accept: application/json" -H "Content-Type: application/json" http://empoyee-service.local.pcfdev.io/empoyee/get
POST Request to create an employee:
curl -H "Content-Type: application/json" -X POST -d '{"name": "Arpit Aggarwal","email":"aggarwalarpit.89@gmail.com"}' http://empoyee-service.local.pcfdev.io/employee/create
The complete source code is hosted on github.
Reference: | Deploying RESTful Service on Cloudfoundry from our JCG partner Arpit Aggarwal at the Arpit Aggarwal blog. |