Azure Container Registry のコンテナー イメージを Azure App Service へ配置して実行する

# はじめに
Azure では、Azure Kubernetes Service, Azure Container Apps, Azure Container Instances, Azure Web App for Containers(Azure App Service), Azure Functions 等のサービスで、様々な用途別のコンテナー実行をサポートしています。
今回は、Web アプリのコンテナー イメージを容易に実行できる Azure Web App for Containers について、コンテナー化した Web アプリの配置、実行方法について説明します。
Azure Web App for Containers は、Azure App Service のコンテナーサポート機能として提供されています。
# 前提条件
- Azure Container Registry へ Web アプリの Linux コンテナー イメージを格納済
    - [WSL2 でビルドした Docker イメージを Azure Container Registry へ push する
](https://qiita.com/hiromasa-masuda/items/1c525661588d4dadbeb4) で手順を説明しています。

# Azure Web App for Containers(Azure App Service) の構築
[Azure Portal](https://portal.azure.com/) を起動します。[リソースの作成] で、"Web App for Containers" を検索して、[Web App for Containers] - [作成] を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172205/568d3fd1-8e72-68e6-589c-ec59cffae6f7.png)

[Web アプリの作成] - [基本] で、各項目を設定します。
- [名前]: Web アプリのホスト名を指定します。
- [公開]: [Docekr コンテナー] を選択します。コンテナー イメージの配置に必要です。
- [オペレーティングシステム]: 今回は、Linux コンテナー イメージを実行するので、[Linux] を選択します。Windows コンテナー イメージを実行する場合は、[Windows] を選択します。
- [価格プラン]: 用途に合わせて選択してください。今回は、テスト用途なので、[Free F1] を選択しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172205/21c1d255-e5c2-5190-2f70-44199860f811.png)

[Web アプリの作成] - [Docker] で、各項目を設定します。これらの項目は、App Service 作成後に変更可能です。
[オプション]: 今回は、[単一 コンテナー] を選択します。
[イメージ ソース]: [Azure Container Registry] を選択します。
[レジストリ]: 配置対象のイメージが格納されているレジストリを選択します。Azure テナント内にある Azure Container Registry が選択できます。
[イメージ]: 配置対象のイメージを選択します。
[タグ]: 配置対象のイメージのタグを選択します。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172205/150b6b7f-9ce7-c522-1209-ffcb1b7549c1.png)

[確認および作成] - [作成] を選択します。デプロイが完了したら、[リソースに移動] を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172205/523ae208-abe7-b9b4-05a1-c432d950921c.png)

[概要] を選択し、[URL] のリンクを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172205/9aacec10-9ae5-84f1-33c6-3a37b45d6c3a.png)

選択したコンテナーイメージが正しく起動したことを確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172205/31bee33a-b29c-6f5b-c978-348455aaebf9.png)

# イメージの再配置
確認のためにソースコードを一部変更します。今回は、トップページの文字列 Welcom を Welcom v2 と表示されるように変更しました。
コンテナー イメージをビルドして、Azure Container Registry へ同じ名前、同じタグで、push します。
この状態では、App Service のイメージは更新されません。
[概要] - [再起動] - [はい] を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172205/78c700f4-488f-8102-a936-3ad9a4d3d9b0.png)
再起動が終わったら、[概要] - [URL] のリンクを選択します。イメージが更新されたことを確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172205/32f7ece5-665c-a99f-4294-a7e9e122d3d5.png)

# 継続的デプロイの設定
[デプロイメント] - [デプロイ センター] を選択します。[Web アプリの作成] - [Docker] で設定した各項目が確認できます。この画面から対象のイメージやタグ等の各項目を変更できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172205/461aa878-394a-3740-c245-d6acf97f9c23.png)
Azure Container Registry のイメージが変更された際に、自動的に App Service のイメージを再配置したい場合は、[継続的デプロイ] をオンにし、[保存] を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172205/df3bd203-e704-bb77-82bc-8092ff774a3c.png)

# まとめ
コンテナーイメージの実行先として、Azure Web App for Containers(Azure App Service) を使用することで、容易に、イメージを展開、実行することができました。
また、継続的デプロイを設定することで、レジストリのイメージ更新時に、自動で Azure App Service へイメージを配置することもできるようになります。
# 参考
- [Azure コンテナー サービス](https://azure.microsoft.com/ja-jp/products/category/containers/)
- [WSL2 でビルドした Docker イメージを Azure Container Registry へ push する](https://qiita.com/hiromasa-masuda/items/1c525661588d4dadbeb4)