更新映像並自動重新部署 Web 應用程式

已完成

持續部署是許多變動快速之組織所需的關鍵功能。 他們需要快速部署其軟體的最新版本,並將慌亂的情況降到最低。

在範例案例中,開發小組會定期在 Web 應用程式中新增新的功能和增強功能。 因此,該小組已決定採用持續部署方法。

在本單元中,您將設定 Web 應用程式的持續部署,以使用 Azure Container Registry 中的映像。

什麼是 Webhook?

Azure App Service 支援使用 Webhook 進行持續部署。 Webhook 是 Container Registry 所提供的服務。 服務和應用程式可以訂閱 Webhook 以接收登錄中映像的更新相關通知。 使用 App Service 的 Web 應用程式可以訂閱 Container Registry Webhook,以接收包含 Web 應用程式映像的更新相關通知。 當映像更新且 App Service 收到通知時,您的應用程式會自動重新啟動網站,並提取最新版的映像。

什麼是 Azure Container Registry 工作功能?

您可以使用 Container Registry 的「工作」功能,在每次映像原始程式碼變更時,自動重建映像。 您可以設定 Container Registry 工作來監視包含您程式碼的 GitHub 存放庫,並在每次程式碼有所變更時觸發建置。 如果建置順利完成,Container Registry 便可將映像儲存在存放庫中。 如果您的 Web 應用程式已在 App Service 中設定進行持續整合,它就會透過 Webhook 收到通知並更新應用程式。

讓我們使用這兩個功能,從 App Service 啟用持續整合。

從 App Service 啟用持續整合

Azure 入口網站中 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 登錄中。 執行此命令之前,需要建立具備權限的 GitHub 個人存取權杖,才可在您的存放庫中建立 Webhook。 若是私人存放庫,則該權杖也需要完整的存放庫讀取權限。

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>