イメージを更新して Web アプリを自動的に再デプロイする
継続的デプロイは、動きの速い多くの組織にとって重要な機能です。 すばやく、かつ最小限の労力で、最新バージョンのソフトウェアをデプロイする必要があります。
シナリオ例では、開発チームは定期的に Web アプリに新機能と機能強化を追加します。 このため、チームは継続的デプロイのアプローチを採用することにしました。
このユニットでは、Azure Container Registry 内のイメージを使った Web アプリの継続的デプロイを構成します。
Webhook とは
Azure App Service では、Webhook を使用した継続的デプロイがサポートされています。 Webhook は Container Registry によって提供されるサービスです。 サービスやアプリケーションで Webhook をサブスクライブして、レジストリ内のイメージの更新に関する通知を受信することができます。 App Service を使用する Web アプリでは、Container Registry の Webhook をサブスクライブして、Web アプリを含むイメージの更新に関する通知を受信することができます。 イメージが更新されて App Service が通知を受け取ると、アプリによって自動的にサイトが再起動され、最新バージョンのイメージがプルされます。
Azure Container Registry タスクの機能とは
Container Registry の "タスク" 機能を使って、そのソース コードが変更されるたびにイメージを自動的にリビルドすることができます。 コードを含む GitHub リポジトリを監視し、それが変更されるたびにビルドをトリガーするように、Container Registry タスクを構成することができます。 ビルドが正常に完了すると、Container Registry ではそのイメージをリポジトリに格納できます。 App Service 内の Web アプリが継続的インテグレーション用に設定されている場合、これは Webhook 経由で通知を受信してアプリを更新します。
これら 2 つの機能を使用して、App Service からの継続的インテグレーションを有効にしましょう。
App Service からの継続的インテグレーションの有効化
Azure portal の App Service リソースの [デプロイ センター] ページでは、継続的インテグレーションを自動的にセットアップできます。 [継続的デプロイ] を [オン] にすると、App Service によってコンテナー レジストリ内の Webhook が構成され、App Service エンドポイントに通知します。 このエンドポイントに届けられるレジストリからの通知によって、アプリが再起動され、コンテナー イメージの最新バージョンがプルされます。
Azure Container Registry タスクを使用して継続的インテグレーションをソース管理に拡張する
Container Registry タスクはコマンド ラインから作成する必要があります。 以前にイメージを作成するために実行した az acr build
コマンドとは異なり、az acr task create
コマンドでは有効期間が長いタスクを作成して登録します。
以下のコマンドは、buildwebapp というタスクを作成する方法を示しています。 このタスクでは、このモジュールで使うサンプル Web アプリの GitHub リポジトリを監視します。 変更がコミットされるたびに、タスクによって GitHub のソース コードから webimage
Docker イメージがビルドされて Container Registry のレジストリに格納されます。 このコマンドを実行する前に、リポジトリで Webhook を作成するアクセス許可を持つ GitHub 個人用アクセス トークンを作成する必要があります。 プライベート リポジトリでは、トークンに完全なリポジトリの読み取りアクセス許可が必要です。
az acr task create --registry <container_registry_name> --name buildwebapp --image webimage --context https://github.com/MicrosoftDocs/mslearn-deploy-run-container-app-service.git --file Dockerfile --git-access-token <access_token>