Spring Cloud Dersleri : Spring Boot Projesini Google Cloud App Engine Deploy Etmek
Spring Cloud Dersleri’ne devam ediyoruz.
Bu yazımızda bir Spring Boot Projesi’ni Google Cloud App Engine’ye nasıl deploy edilir. Google Cloud’da neler yapmamız gerektiğini, projemize hangi bağımlılıkları eklediğimizi göreceğiz.
Bir Spring projesi oluşturacağız. https://start.spring.io/ adresine girelim. Projemiz maven projesi olacak paket tipi olarak war seçiyoruz. Bağımlılıklarımız ise;
- GCP Support GOOGLE CLOUD PLATFORM
- Spring WEB
Bağımlılıklarımızı oluşturduktan sonra ise maven bağımlılığımız aşağıdaki gibi olacaktır.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.burakkutbay</groupId>
<artifactId>gcpspringboot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>gcpspringboot</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR6</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Code language: HTML, XML (xml)
Yukarıdaki pom.xml dosyamıza bir plugin ekleme yapmamız gerekiyor bu plugin Google Cloud için derlenmesi çalıştırılması ve deploy edilmesine yardımcı olacaktır.
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>2.0.0</version>
</plugin>
Code language: HTML, XML (xml)
Bir controller oluşturalım bize Hello World desin.
@RestController
public class HelloController {
@GetMapping("/")
public String hello() {
return "Hello World!";
}
}
Code language: PHP (php)
Spring Boot projemizin, Google Cluod App Engine‘de deploy ederken projenin özelliklerini anlaması için konfigürasyon dosyası diyebileceğimiz bir xml ekliyoruz.
webapp/WEB-INF/appengine-web.xml lokasyonuna ekliyoruz ve içerisine bilgileri yazıyoruz.
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<version>1</version>
<threadsafe>true</threadsafe>
<runtime>java8</runtime>
</appengine-web-app>
Code language: HTML, XML (xml)
Projemizdeki şu bağımlılığımızı kaldırıyoruz.
<!-- Remove spring-boot-starter-tomcat dependency
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
-->
Code language: HTML, XML (xml)
Eklediğimiz plugine devrettik.
Projemizi eklediğimiz pluginin çalıştırmasını sağlayalım. Aşağıdaki kodu yazarak projemizi çalıştıralım.
$ mvn appengine:run
Google Cloud’a Deploy Etmek
Bilgisiyarımıza GCloud SDK yüklüyoruz. GCloud SDK ile birlikte Google Cloud SDK Shell consol kullanarak Google Coulddaki projelerimizi yönetip bilgisayarımızaki projeleri de yükleyebiliyoruz.
Google Cloud SDK Shell’i açalım ve bir proje oluşturalım.
$ gcloud config set project spring-bootdeploy-829123
Code language: JavaScript (javascript)
Ardından projemizin olması gereken ülkeyi seçiyoruz.
Google Cloud App Engine için kullanacağımız projemizi oluşturduktan sonra deploy ediyoruz. Deploy etmemiz için gereken komut aşağıdaki gibi olacaktır.
mvn appengine:deploy
Code language: CSS (css)
Terminali takip ettiğimizde deploy edildiği ve projenin yayınlandığı adresi görebiliriz.
....
[INFO] GCLOUD: Deployed service [default] to [https://ornekprojeadi.appspot.com]
...
Code language: CSS (css)
Ve sitemize gidelim sonucu görelim.
No Comment! Be the first one.