最速で Azure Container Apps (ACA) を立ち上げる
こんにちは、@studio_meowtoon です。今回は、WSL の Ubuntu から Azure Container Apps にコンテナ アプリを最速でデプロイすることに挑戦します。
目的
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 | カスタムコンテナイメージの名前です。 |
ファイルの内容
#!/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 を確認
このように Container Apps コンテナ アプリが作成されています。
Container Apps を削除する
シェルスクリプトを作成します。
$ vim delete_resource_group.sh
次のパラメータは上で作成したものと合わせてください。
No | 行 | パラメータ | 内容 |
---|---|---|---|
1 | resource_group_name=rg-hello | rg-hello | リソースグループの名前です。 |
ファイルの内容
#!/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 の開発環境などを紹介していきますので、ぜひお楽しみにしてください。
推奨コンテンツ