🍵
【Hello World①】Spring Boot @ Java
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