0
0

More than 1 year has passed since last update.

Spring MVC WEBアプリを ACA (Azure Container Apps) 環境で起動する

Last updated at Posted at 2023-02-15

Spring MVC WEBアプリを ACA (Azure Container Apps) 環境で起動する

目的

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

実現すること

Microsoft Azure Container Apps (ACA) に 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 コンテナ レジストリにプュシュすることが出来ました。

コンテナ アプリ環境

拡張機能をインストール ※初回のみ

$ az extension add --name containerapp --upgrade

Microsoft.App 名前空間を登録 ※初回のみ

$ az provider register --namespace Microsoft.App

Microsoft.OperationalInsights プロバイダーを登録 ※初回のみ

$ az provider register --namespace Microsoft.OperationalInsights

コンテナ アプリ環境の作成
※ Kubernetes 基盤の環境だと思われるので少し時間が掛かるみたいです。

Microsoft.App/managedEnvironments
$ az containerapp env create \
    --resource-group rg-hello \
    --name cae-hello \
    --location japaneast

コンテナ アプリ環境の一覧表示

$ az containerapp env list

※ コンテナ アプリ環境を削除する場合

$ az containerapp env delete -n <env-name> -g <group>

コンテナ アプリ

コンテナ アプリの作成とデプロイ

Microsoft.App/containerApps
$ az containerapp create \
    --resource-group rg-hello \
    --environment cae-hello \
    --name ca-hello-spring-mvc \
    --image cr20230212.azurecr.io/app-hello-spring-mvc:latest \
    --target-port 8080 \
    --ingress 'external' \
    --registry-server cr20230212.azurecr.io \
    --registry-username cr20230212 \
    --registry-password XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \
    --min-replicas 1

コンテナ アプリが作成されました。

Container app created. Access your app at https://ca-hello-spring-mvc.bravecoast-af6ec142.japaneast.azurecontainerapps.io/

※ コンテナ アプリを削除する場合

$ az containerapp delete -n <name> -g <group>

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

https://ca-hello-spring-mvc.bravecoast-af6ec142.japaneast.azurecontainerapps.io/app/hello

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

まとめ

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

参考

公式 Azure Container Apps コマンド リファレンス

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