共用方式為


教學課程:將更新的容器映像推送至異地複寫容器登錄,以進行區域 Web 應用程式部署

這是三段式教學課程系列的第三段。 上一個教學課程是針對兩個不同區域的 Web 應用程式部署設定地理複寫。 在本教學課程中,您要先修改應用程式,然後建立新的容器映像,再將它推送至您進行地理複寫的登錄中。 最後,您要檢視由 Azure Container Registry Webhook 在兩個 Web 應用程式執行個體中自動部署的變更。

在本教學課程中,系列的最後一段:

  • 修改 Web 應用程式 HTML
  • 建置和標記 Docker 映像
  • 將變更推送至 Azure Container Registry
  • 檢視兩個不同區域中更新後的應用程式

如果您尚未設定兩個用於容器的 Web 應用程式區域部署,請先返回系列的上一個教學課程從 Azure Container Registry 部署 Web 應用程式

修改 Web 應用程式

在此步驟中,請對 Web 應用程式進行一項在將更新的容器映像推送至 Azure Container Registry 之後很容易發現的變更。

在上一個教學課程中,從 GitHub 複製的應用程式來源中,找出 AcrHelloworld/Views/Home/Index.cshtml 檔案,並在慣用的文字編輯器中開啟檔案。 在現有的 <h1> 行下方加入下列這行:

<h1>MODIFIED</h1>

您修改過的 Index.cshtml 應該類似:

@{
    ViewData["Title"] = "Azure Container Registry :: Geo-replication";
}
<style>
    body {
        background-image: url('images/azure-regions.png');
        background-size: cover;
    }
    .footer {
        position: fixed;
        bottom: 0px;
        width: 100%;
    }
</style>

<h1 style="text-align:center;color:blue">Hello World from:  @ViewData["REGION"]</h1>
<h1>MODIFIED</h1>
<div class="footer">
    <ul>
        <li>Registry URL: @ViewData["REGISTRYURL"]</li>
        <li>Registry IP: @ViewData["REGISTRYIP"]</li>
        <li>Registry Region: @ViewData["REGION"]</li>
    </ul>
</div>

重建映像

因為您更新了 Web 應用程式,所以請重建其容器映像。 像之前一樣,為標記使用完整的映像名稱,包括登入伺服器的完整網域名稱 (FQDN):

docker build . -f ./AcrHelloworld/Dockerfile -t <acrName>.azurecr.io/acr-helloworld:v1

將映像推送至 Azure Container Registry

接下來,將更新的 acr-helloworld 容器映像推送至您進行異地複寫的登錄。 此時,您要執行一個 docker push 命令,將更新的映像同時部署至「美國西部」和「美國東部」兩個區域中的登錄複本。

docker push <acrName>.azurecr.io/acr-helloworld:v1

您的 docker push輸出應該類似如下範例:

$ docker push uniqueregistryname.azurecr.io/acr-helloworld:v1
The push refers to a repository [uniqueregistryname.azurecr.io/acr-helloworld]
5b9454e91555: Pushed
d6803756744a: Layer already exists
b7b1f3a15779: Layer already exists
a89567dff12d: Layer already exists
59c7b561ff56: Layer already exists
9a2f9413d9e4: Layer already exists
a75caa09eb1f: Layer already exists
v1: digest: sha256:4c3f2211569346fbe2d1006c18cbea2a4a9dcc1eb3a078608cef70d3a186ec7a size: 1792

檢視 Webhook 記錄

複寫映像時,您會看到觸發的 Azure Container Registry Webhook。

若要查看您在上一個教學課程中將容器部署至用於容器的 Web 應用程式時所建立的區域 Webhook,請在 Azure 入口網站中瀏覽至您的容器登錄,然後在 [服務] 下選取 [Webhook]

Azure 入口網站中的容器登錄 Webhook

選取每個 Webhook 可檢視其呼叫及回應的歷程記錄。 您應該會在兩個 Webhook 記錄中看到推送動作的資料列。 此時,位於「美國西部」區域的 Webhook 記錄顯示在上一個步驟中由 docker push 觸發的推送動作:

Azure 入口網站中的容器登錄 Webhook 記錄 (美國西部)

檢視更新後的 Web 應用程式

Webhook 會通知 Web 應用程式新的映像已推送至登錄,此作業會自動將更新的容器部署至兩個區域的 Web 應用程式。

在您的網頁瀏覽器中,瀏覽至這兩個區域的 Web 應用程式部署,確認兩個部署中的應用程式都已更新。 請注意,您可以在每個 App Service 概觀 索引標籤右上方找到已部署 Web 應用程式的 URL。

Azure 入口網站中的 App Service 概觀

若要查看更新過的應用程式,請選取 App Service 概觀中的連結。 以下是在「美國西部」中執行之應用程式的範例檢視:

在美國西部區域中執行之已修改 Web 應用程式的瀏覽器檢視

在您的瀏覽器中檢視,確認更新的容器映像也已部署至「美國東部」部署。

在美國東部區域中執行之已修改 Web 應用程式的瀏覽器檢視

只要執行一次 docker push,您就能自動更新在兩個區域 Web 應用程式部署中執行的 Web 應用程式。 此外,Azure Container Registry 也從最靠近每個部署的存放庫提供容器映像。

下一步

在本教學課程中,您更新了 Web 應用程式容器,並將新版推送到您進行地理複寫的登錄。 Azure Container Registry 中的 Webhook 將該項更新通知了「用於容器的 Web 應用程式」執行個體,因而觸發從最靠近的登錄複本進行本機提取。

ACR Build:自動映像建置和修補

除了異地複寫之外,ACR Build 是 Azure Container Registry 另一項有助於最佳化容器部署管線的功能。 若要了解 ACR Build 的功能,請從 ACR Build 概觀開始:

使用 ACR Build 自動進行作業系統和架構修補