🍵

【Hello World①】Spring Boot @ Java

2024/03/31に公開

Spring BootでJavaのWebアプリを作ります

前回の作業でWindows上でDockerが使えるようになったので、今回はDockerのコンテナ上で動くWebアプリを作ってみます。
まずは90年代後半にオブジェクト志向で一世を風靡したJava言語でHello Worldアプリを作ります。フレームワークは「Spring Boot」を使います。

環境

Windows 11 Pro 23H2
WLS 2.1.5.0(Ubuntu 22.04.1 LTS)
Docker Desktop 4.28.0
Visual Studio Code

①Dockerfile作成

作業用にフォルダを作り、作成したフォルダに「Dockerfile」という名前のファイルを作成します。

ディレクトリ構成
spring
 └─Dockerfile

※PowerShellでspringというフォルダを作り、その中にDockerfileを作るコマンドの例。

PowerShell
mkdir spring        ;`
cd spring           ;`
New-Item Dockerfile ;`
code Dockerfile

Dockerfileには以下の内容を記述します。

Dockerfile
FROM public.ecr.aws/amazoncorretto/amazoncorretto:17
RUN  yum update -y && yum install -y curl zip unzip \
 &&  curl -s https://get.sdkman.io | bash \
 &&  mkdir /app \
 &&  bash -c 'source /root/.sdkman/bin/sdkman-init.sh \
           && sdk install springboot 3.2.3 \
           && sdk install maven 3.9.6 \
           && spring init --dependencies=web,data-jpa,h2 --build=maven /app'

②Spring Bootプロジェクト作成

Dockerのイメージを作成

springという名前のDockerのイメージを作成するコマンドを実行します。
※イメージの中ではSpring Bootのプロジェクトが作成されています。

PowerShell
docker build -t spring .

デモアプリのファイルを取得

イメージから一時的にコンテナを作成し、コンテナの中にある「DemoApplication.java」をパソコンにコピーするコマンドを実行します。

PowerShell
docker run --rm -v .:/host spring bash -c "cp /app/src/main/java/com/example/app/DemoApplication.java /host"
ディレクトリ構成
spring
 ├─DemoApplication.java
 └─Dockerfile

③Hello Worldアプリ作成

「DemoApplication.java」を開き、以下の内容に修正します。

DemoApplication.java
package com.example.app;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class DemoApplication {
	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}
	@RequestMapping("/")
	public String hello() {
		return "Hello World Spring Boot on Docker";
	}
}

④動作確認

Dockerfileを以下の内容に変更します。
※下4行を追加。

Dockerfile
FROM public.ecr.aws/amazoncorretto/amazoncorretto:17
RUN  yum install -y curl zip unzip \
 &&  curl -s https://get.sdkman.io | bash \
 &&  mkdir /app \
 &&  bash -c 'source /root/.sdkman/bin/sdkman-init.sh \
           && sdk install springboot 3.2.3 \
           && sdk install maven 3.9.6 \
           && spring init --dependencies=web,data-jpa,h2 --build=maven /app'
COPY DemoApplication.java /app/src/main/java/com/example/app/
RUN  cd /app && ./mvnw clean package
WORKDIR /app
CMD  ["./mvnw","spring-boot:run"]

イメージを再度作成し、コンテナを起動するコマンドを実行します。

PowerShell
docker build -t spring .
docker run --rm -d -p 8080:8080 --name spring spring

Webブラウザから「http://localhost:8080/」に接続して、「Hello World Spring Boot on Docker」が表示されれば完成です。

Discussion