0
0

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 MVC WEBアプリを Azure App Service 環境で起動する (Docker イメージ)

Last updated at Posted at 2023-02-15

Spring MVC WEBアプリを Azure App Service 環境で起動する (Docker イメージ)

目的

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

実現すること

Microsoft Azure App Service に 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

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

$ mvn clean install

Docker イメージを作成

Dockerfile を作成

$ vim Dockerfile

ファイルの内容

FROM jetty:10.0.13-jre11-alpine

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

EXPOSE 8080

Docker イメージをビルド
※ ローカルの Docker 環境 (Docker Desktop) に app-hello-spring-mvc Docker イメージが作成されます。

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

Docker イメージの確認

$ docker images | grep app-hello-spring-mvc
app-hello-spring-mvc   latest   fb56b58a2aed   37 minutes ago   195MB

Azure のアカウントを取得

公式 Azure の無料アカウントを使ってクラウドで構築

Azure CLI でサインイン

Azure CLI をインストールする手順 を参照してください。

$ az login

※ 最新バージョンに更新する場合

$ az upgrade

Azure 環境

リソースグループ

リソースグループを作成

Microsoft.Resources/resourceGroups
$ az group create \
    --name rg-hello \
    --location japaneast

リソースグループ一覧表示

$ az group list

※ リソースグループを削除する場合

$ az group delete -n <group>

コンテナ レジストリ

コンテナ レジストリを作成
※ --sku Free では作成できません。
※ --name はパブリックで一意の値が求められます。

Microsoft.ContainerRegistry/registries
$ az acr create \
    --resource-group rg-hello \
    --name cr20230212 \
    --sku Basic

コンテナ レジストリ一覧表示

$ az acr list

コンテナ レジストリログイン資格情報を表示

$ az acr update -n cr20230212 --admin-enabled true
$ az acr credential show \
    --resource-group rg-hello \
    --name cr20230212
{
  "passwords": [
    {
      "name": "password",
      "value": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    },
    {
      "name": "password2",
      "value": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    }
  ],
  "username": "cr20230212"
}

※ コンテナ レジストリを削除する場合

$ az acr delete --n <acr-name>

コンテナ レジストリにログイン

$ az acr login --name cr20230212

Docker イメージをコンテナ レジストリにプュシュ

$ docker tag app-hello-spring-mvc cr20230212.azurecr.io/app-hello-spring-mvc:latest
$ docker push cr20230212.azurecr.io/app-hello-spring-mvc:latest

コンテナ レジストリのイメージを確認

$ az acr repository list --name cr20230212 --output table
Result
--------------------
app-hello-spring-mvc

ローカルの Docker イメージを Azure コンテナ レジストリにプュシュすることが出来ました。

App Service プラン

App Service プランを作成

Microsoft.Web/serverfarms
$ az appservice plan create \
    --resource-group rg-hello \
    --name asp-hello \
    --sku Free \
    --is-linux

App Service プランの一覧表示

$ az appservice plan list

※ App Service プランを削除する場合

$ az appservice plan delete -n <plan> -g <group>

App Service WEB アプリ

※ Azure App Service に Spring MVC WEBアプリの Docker イメージをデプロイする方法はいくつかありますが、今回は Azure CLI で ACR 上の Docker イメージをデプロイする方法を紹介します。

WEB アプリの作成とデプロイ

Microsoft.Web/sites
$ az webapp create \
    --resource-group rg-hello \
    --plan asp-hello \
    --name app-hello-spring-mvc \
    --deployment-container-image-name cr20230212.azurecr.io/app-hello-spring-mvc:latest \
    --docker-registry-server-user cr20230212 \
    --docker-registry-server-password XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Web アプリの設定を構成
※ App Service WEB アプリはデフォルトで 80 番ポートをリッスンする仕様です。

$ az webapp config appsettings set \
    --resource-group rg-hello \
    --name app-hello-spring-mvc \
    --settings WEBSITES_PORT=8080

Web アプリのログ記録の構成

$ az webapp log config \
    --resource-group rg-hello \
    --name app-hello-spring-mvc \
    --docker-container-logging filesystem \
    --application-logging filesystem \
    --web-server-logging filesystem 

起動する場合
※ デフォルトで App Service は起動しているが Web アプリは起動していない。

$ az webapp start --name app-hello-spring-mvc --resource-group rg-hello

WEBブラウザーでアクセス

$ az webapp browse --name app-hello-spring-mvc --resource-group rg-hello

WEB アプリのログ確認

$ az webapp log tail --name app-hello-spring-mvc --resource-group rg-hello

※ 立ち上がりに少し時間が掛かりますがページが表示されます。

  • しかし表示されたページ "/" にはコンテンツを設定していません。

改めてWEBブラウザで確認
※ URLは環境で読み替えて下さい。

https://app-hello-spring-mvc.azurewebsites.net/app/hello

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

まとめ

  • Ubuntu の 最小構成の Java 開発環境で Spring MVC WEBアプリを Azure App Service 環境で起動させることが出来ました。

参考

公式 Azure App Service コマンド リファレンス

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?