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?

最速で Azure Container Apps (ACA) を立ち上げる

Last updated at Posted at 2023-03-16

最速で Azure Container Apps (ACA) を立ち上げる

こんにちは、@studio_meowtoon です。今回は、WSL の Ubuntu から Azure Container Apps にコンテナ アプリを最速でデプロイすることに挑戦します。
spring-boot_on_azure-container-apps.png

目的

Windows 11 の Linux でクラウド開発します。

こちらから記事の一覧がご覧いただけます。

実現すること

ローカル環境の Ubuntu から Azure Container Apps に、シェルスクリプトを用いて Spring Boot カスタムコンテナイメージのアプリをデプロイします。

はじめに

みなさん Azure を楽しんでますか?今回は趣向を変えて Azure Container Apps を最速で立ち上げることに挑戦してみたいと思います。

Microsoft Azure は、Web ブラウザから簡単にクラウド環境コンテナ アプリをアップロードできる環境があります。これにより、コマンドを入力する必要がなく、簡単に Azure に コンテナ アプリをデプロイできます。この記事では学習のため、Ubuntu 上のシェルスクリプトから Container Apps を起動する方法を試みています。ご注意ください。

関連記事

他の Azure PaaS サービスと比較してみましょう!

開発環境

  • 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 -version
openjdk version "11.0.18" 2023-01-17
OpenJDK Runtime Environment (build 11.0.18+10-post-Ubuntu-0ubuntu122.04)
OpenJDK 64-Bit Server VM (build 11.0.18+10-post-Ubuntu-0ubuntu122.04, mixed mode, sharing)

Maven ※ こちらの関連記事からインストール方法をご確認いただけます

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

Docker ※ こちらの関連記事からインストール方法をご確認いただけます

$ docker --version
Docker version 23.0.1, build a5ee5b1

Azure CLI ※ こちらの関連記事からインストール方法をご確認いただけます

$ az --version
azure-cli                         2.45.0
core                              2.45.0
telemetry                          1.0.8

この記事では基本的に Ubuntu のターミナルで操作を行います。Vim を使用してコピペする方法を初めて学ぶ人のために、以下の記事で手順を紹介しています。ぜひ挑戦してみてください。

Spring Boot アプリを作成

こちらの関連記事で手順がご確認いただけます。

ここまでの作業で、Docker Hub$USER/app-hello-spring-boot:latest というカスタムコンテナイメージの Web アプリが作成済みです。

ここで $USER という埋め込み変数は、Ubuntu のシェル変数 USER のことです。つまり、カスタムコンテナイメージを Docker Hub にプッシュする際に指定するアカウント名と、Ubuntuユーザー名を同じにすると、イメージの取り扱いが簡単になります。ただし、この方法は検証用途に限定されます。

プロジェクトフォルダに移動

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

$ cd ~/tmp/hello-spring-boot

Container Apps を立ち上げる

シェルスクリプトを作成します。

$ vim create_container_apps.sh

状況により、次の4つのパラメータを変更してください。

No パラメータ 内容
1 resource_group_name=rg-hello rg-hello リソースグループの名前です。
2 containerapp_env_name=cae-hello cae-hello Container Apps 環境の名前です。
3 containerapp_name=ca-hello-spring-boot ca-hello-spring-boot コンテナ アプリの名前です。
4 container_image_name=app-hello-spring-boot:latest app-hello-spring-boot:latest カスタムコンテナイメージの名前です。

ファイルの内容

create_container_apps.sh
#!/bin/sh

# set variables.
location_name=japaneast
resource_group_name=rg-hello
containerapp_env_name=cae-hello
containerapp_name=ca-hello-spring-boot
container_image_name=app-hello-spring-boot:latest

# create a resource group.
az group create \
    --name $resource_group_name \
    --location $location_name

# create a containerapp env.
az containerapp env create \
    --resource-group $resource_group_name \
    --name $containerapp_env_name \
    --location $location_name

# create a containerapp.
az containerapp create \
    --resource-group $resource_group_name \
    --environment $containerapp_env_name \
    --name $containerapp_name \
    --image $USER/$container_image_name \
    --target-port 8080 \
    --ingress 'external' \
    --min-replicas 1

# get a containerapp fqdn.
fqdn=$(az containerapp show \
    --resource-group $resource_group_name \
    --name $containerapp_name \
    --query 'properties.configuration.ingress.fqdn' \
    --output tsv)

# get a containerapp data.
curl https://$fqdn/api/data -w '\n'

実行権限を付加します。

$ chmod +x create_container_apps.sh

Azure にログインします。

$ az login

こちらの関連記事で手順がご確認いただけます。

シェルスクリプトを実行します。

$ ./create_container_apps.sh

デプロイが完了すると以下の内容が表示されます。

{"message":"Hello World!"}

シェルスクリプトを実行するコマンドを叩いてから Hello World! が表示されるまで4分28秒でした。

Azure Portal を確認

cap_1.png
このように Container Apps コンテナ アプリが作成されています。

Container Apps を削除する

シェルスクリプトを作成します。

$ vim delete_resource_group.sh

次のパラメータは上で作成したものと合わせてください。

No パラメータ 内容
1 resource_group_name=rg-hello rg-hello リソースグループの名前です。

ファイルの内容

delete_resource_group.sh
#!/bin/sh

# set variables.
resource_group_name=rg-hello

# delete resource group
az group delete \
    --name $resource_group_name \
    --yes

実行権限を付加します。

$ chmod +x delete_resource_group.sh

シェルスクリプトを実行します。

$ ./delete_resource_group.sh

削除中は以下のように表示されます。

 / Running ..

まとめ

Azure Container Apps (ACA) 環境で、カスタムコンテナイメージの Spring Boot Web アプリを簡単に起動することができました。

実際の業務では、手動で Container Apps に コンテナ アプリをデプロイすることもできます。例えば、Azure ポータル上で手動で設定を行ったり、さらに、CI/CD パイプラインを使用して自動的にデプロイすることもできます。しかし、このスクリプトを読むことで、Container Apps に コンテナ アプリを配備するために必要な手順が理解できます。また、このスクリプトをさらに改良することに挑戦することもできます。

どうでしたか? WSL Ubuntu で、Azure クラウドアプリケーション開発環境を手軽に構築することができます。ぜひお試しください。今後も Azure の開発環境などを紹介していきますので、ぜひお楽しみにしてください。

推奨コンテンツ

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?