0
2

More than 1 year has passed since last update.

Spring MVC WEBアプリを Docker 環境で起動する

Last updated at Posted at 2023-02-09

Spring MVC WEBアプリを Docker 環境で起動する

目的

Spring MVC WEBアプリを Docker 環境で起動して理解を深めます。

実現すること

ローカル (Ubuntu) の Docker 環境 (Docker Desktop) で Spring MVC 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 MVC WEBアプリの作成

最小構成 Spring MVC WEBアプリの Hello World! を参照してください。

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

$ cd ~/tmp/hello-spring-mvc

ビルド

ビルド
※ target/hello-spring-mvc.war が作成されます。

$ mvn clean install

docker-compose.yml (Docker) の作成

$ vim docker-compose.yml

ファイルの内容

version: '3'
services:
  app:
    image: jetty:10.0.13-jre11-alpine
    ports:
      - "8080:8080"
    volumes:
      - ./target:/var/lib/jetty/webapps

※ポイント

  • ホスト側の /target/hello-spring-mvc.war を Docker コンテナ側の /var/lib/jetty/webapps にマウントします。

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

$ tree
.
├── docker-compose.yml
├── pom.xml
├── src
│   └── main
│       ├── java
│       │   └── com
│       │       └── example
│       │           └── springmvc
│       │               ├── WebApplication.java
│       │               ├── config
│       │               │   └── WebMvcConfig.java
│       │               └── controller
│       │                   └── HelloWorldController.java
│       └── resources
│           └── templates
│               └── hello.html

Docker 環境で起動

Docker Compose の確認

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

コンテナ起動

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

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

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

http://localhost:8080/hello-spring-mvc/hello

WEBブラウザに "Hello World!" と表示することが出来ました。

[おまけ] Docker イメージを作成する手順

Dockerfile を使用して Docker イメージを作成します。

Dockerfile 作成

$ vim Dockerfile

ファイルの内容

FROM jetty:10.0.13-jre11-alpine

COPY target/*.war /var/lib/jetty/webapps/app.war

EXPOSE 8080

Docker イメージをビルド

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

app-hello-spring-mvc イメージが作成されました。

作成したイメージから別のコンテナを起動

$ docker run -p 8080:8080 -d --name app-hello-spring-mvc-1 app-hello-spring-mvc

WEBブラウザで確認

http://localhost:8080/app/hello

WEBブラウザに "Hello World!" と表示することが出来ました。

まとめ

  • Ubuntu の 最小構成の Java 開発環境で Spring MVC WEBアプリを Docker 環境にてコンテナとして起動させることが出来ました。
0
2
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
2