0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Spring Boot WEBサービスを Docker 環境で起動する

Last updated at Posted at 2023-02-10

Spring Boot WEBサービスを Docker 環境で起動する

目的

Spring Boot WEBサービスを Docker 環境で起動して理解を深めます。

実現すること

ローカル (Ubuntu) の Docker 環境 (Docker Desktop) に Spring Boot WEBアプリの Docker イメージをデプロイ・起動します。

開発環境

  • Windows 11 Home 22H2 を使用しています。
  • WSL の Ubuntu を操作していきますので macOS の方も参考にして頂けます。

WSL (Microsoft Store アプリ版)

> wsl --version
WSL バージョン: 1.0.3.0
カーネル バージョン: 5.15.79.1
WSLg バージョン: 1.0.47

Ubuntu

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.1 LTS
Release:        22.04

Java JDK ※ 最小構成 Java JDK の導入と Hello World!

$ java -version
openjdk version "11.0.17" 2022-10-18
OpenJDK Runtime Environment (build 11.0.17+8-post-Ubuntu-1ubuntu222.04)
OpenJDK 64-Bit Server VM (build 11.0.17+8-post-Ubuntu-1ubuntu222.04, mixed mode, sharing)

Maven ※ 最小構成 Maven の導入と Hello World!

$ mvn -version
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 11.0.17, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64

Docker Desktop

Version 4.16.3 (96739)
$ docker --version
Docker version 20.10.22, build 3a2c30b
$ docker-compose --version
Docker Compose version v2.15.1

※ この記事では基本的に Ubuntu のターミナルで操作を行います。

"Hello World" を表示する手順

Spring Boot WEBサービスの作成

最小構成 Spring Boot WEBサービスの Hello World! を参照してください。

プロジェクトフォルダに移動
※ ~/tmp/hello-spring-boot をプロジェクトフォルダとします。

$ cd ~/tmp/hello-spring-boot

ビルド

ビルド
※ target/app.jar が作成されます。

$ mvn clean install

Docker イメージを作成

spring-boot のコマンドでイメージを作成

$ mvn spring-boot:build-image \
    -Dspring-boot.build-image.imageName=app-hello-spring-boot

※ 以下、Dockerfile を使用する古いやり方

Dockerfile を作成

$ vim Dockerfile

ファイルの内容

FROM adoptopenjdk/openjdk11:jdk-11.0.11_9-alpine-slim

WORKDIR /app

COPY target/*.jar app.jar

ENTRYPOINT ["java","-jar","app.jar"]

Docker イメージ作成

$ docker build -t app-hello-spring-boot .

確認

$ docker images | grep app-hello-spring-boot
app-hello-spring-boot   latest   0c8844339bfb   43 years ago   262MB

app-hello-spring-boot という名前の Docker イメージが作成出来ました。

docker-compose.yml の作成

$ vim docker-compose.yml

ファイルの内容

version: '3'
services:
  app:
    image: app-hello-spring-boot
    ports:
      - "8080:8080"

ディレクトリ・ファイル構成

$ tree -I test -I target
.
├── Dockerfile
├── HELP.md
├── docker-compose.yml
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
    └── main
        ├── java
        │   └── com
        │       └── example
        │           └── springboot
        │               ├── SpringbootApplication.java
        │               └── controller
        │                   └── DataController.java
        └── resources
            ├── application.properties
            ├── static
            └── templates

Docker 環境で起動

Docker Compose の確認

$ docker-compose --version
Docker Compose version v2.15.1

コンテナ起動

$ docker-compose up -d
[+] Running 2/2
 ⠿ Network hello-spring-boot_default  Created
 ⠿ Container hello-spring-boot-app-1  Started

※ Docker Desktop を確認するとコンテナとして起動しています。

WEBブラウザで確認
※ 8080 で 404 - Not Found の場合、ポート 8080 が使用されている(※その残骸などの)可能性があります。

http://localhost:8080/api/data

WEBブラウザに {"message":"Hello World!"} と表示され、JSON データを取得することが出来ました。

※ もしくは別ターミナルのコマンドで確認

$ curl -X GET http://localhost:8080/api/data
{"message":"Hello World!"}

まとめ

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?