Spring Cloud

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>

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>

Bir controller oluşturalım bize Hello World desin.

@RestController
public class HelloController {
    @GetMapping("/")
    public String hello() {
        return "Hello World!";
    }
}

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>

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>
  -->

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

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

Terminali takip ettiğimizde deploy edildiği ve projenin yayınlandığı adresi görebiliriz.

....
[INFO] GCLOUD: Deployed service [default] to [https://ornekprojeadi.appspot.com]
...

Ve sitemize gidelim sonucu görelim.

Spring Cloud Google Cloud App Engine

More in:Spring Cloud

Leave a reply

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir