プログラミングBlog

Docker + Gradle + Spring Boot でWarファイル作成後にTomcatにDeproy

①Spring BootをGradleでビルド、Warファイルを作成する
TomcatにWarファイルをDeproyする
前回の続きです
Vscode + Docker + Spring Boot 構築

必要なファイル

以下の記事でアプリを構築しておく
Vscode + Docker + Spring Boot 構築
github.com

以下を確認しておく
ない場合は作成する

ServletInitializer.java

package com.example.demo;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(DemoApplication.class);
    }

}

別のtomcatコンテナにDeproyする場合に必要となる

build.gradle

plugins {
    id 'org.springframework.boot' version '2.5.4'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
    id 'war'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
    mavenCentral()
}

war {
    archiveName 'helloworld.war'
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

test {
    useJUnitPlatform()
}

Warファイル作成用のpluginが追加されているかの確認
id 'war'

dependenciesにspring boot に内蔵されているtomcatを使用しない設定が追加されているかの確認
この記述がないとtomcatが多重起動してしまう
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'

手順① Spring BootをGradleでビルド、Warファイルを作成する

  • gradleがinstallされていることの確認

gradle -v

  • tomcatのversionを調べる

Deproy先のtomcatのversionを合わせるため

./gradlew dependencies

9.0.52であることを確認
Deproy先のtomcatのversionを9.0.52とする

+--- org.springframework.boot:spring-boot-starter-tomcat:2.5.4
|    |    +--- jakarta.annotation:jakarta.annotation-api:1.3.5
|    |    +--- org.apache.tomcat.embed:tomcat-embed-core:9.0.52
|    |    +--- org.apache.tomcat.embed:tomcat-embed-el:9.0.52
|    |    \--- org.apache.tomcat.embed:tomcat-embed-websocket:9.0.52
|    |         \--- org.apache.tomcat.embed:tomcat-embed-core:9.0.52
  • build.gradleを修正する

warファイルの名前を変更するため以下を追加

war {
    archiveName 'helloworld.war'
}
  • Warファイルを作成する
    gradle build

build/libs/直下にwarファイルが作成される
build/libs/helloworld.war

手順② TomcatにWarファイルをDeproyする

Deproy先のTomcatサーバーは以下を使用
tokuty.hatenablog.com

  • git clone
git clone git clone https://github.com/TakushiTokuyama/Docker.git

起動するまでは記事を参照

  • WarファイルをDeproyする

さきほど作成したhelloworld.warTomcatwebapps/にコピーして設置する

参考サイト

www.youtube.com

www.it-mure.jp.net

arcanum.hatenablog.com