자습서: 지역 웹앱 배포를 위해 업데이트된 컨테이너 이미지를 지리적으로 복제된 컨테이너 레지스트리로 푸시Tutorial: Push an updated container image to a geo-replicated container registry for regional web app deployments

세 부분으로 이루어진 자습서 시리즈의 세 번째 부분입니다.This is part three in a three-part tutorial series. 이전 자습서에서 두 개의 서로 다른 지역 웹앱 배포에 대해 지역에서 복제가 구성되었습니다.In the previous tutorial, geo-replication was configured for two different regional Web App deployments. 이 자습서에서는 먼저 애플리케이션을 수정한 다음, 새 컨테이너 이미지를 빌드하고 지역에서 복제된 레지스트리를 푸시합니다.In this tutorial, you first modify the application, then build a new container image and push it to your geo-replicated registry. 마지막으로 웹앱 인스턴스 모두에서 Azure Container Registry webhook에 의해 자동으로 배포된 변경 내용을 확인합니다.Finally, you view the change, deployed automatically by Azure Container Registry webhooks, in both Web App instances.

이 자습서는 시리즈의 마지막 부분입니다.In this tutorial, the final part in the series:

  • 웹 애플리케이션 HTML 수정Modify the web application HTML
  • Docker 이미지 빌드 및 태그 지정Build and tag the Docker image
  • Azure Container Registry에 변경 내용 푸시Push the change to Azure Container Registry
  • 두 개의 서로 다른 지역에서 업데이트된 앱 보기View the updated app in two different regions

두 개의 Web App for Containers 지역 배포를 아직 구성하지 않은 경우 시리즈의 이전 자습서, Azure Container Registry에서 웹앱 배포로 돌아갑니다.If you've not yet configured the two Web App for Containers regional deployments, return to the previous tutorial in the series, Deploy web app from Azure Container Registry.

웹 애플리케이션 수정Modify the web application

이 단계에서는 Azure Container Registry에 업데이트된 컨테이너 이미지를 푸시하면 항상 볼 수 있는 웹 애플리케이션을 변경합니다.In this step, make a change to the web application that will be highly visible once you push the updated container image to Azure Container Registry.

이전 자습서의 GitHub에서 복제한 애플리케이션 원본에서 AcrHelloworld/Views/Home/Index.cshtml 파일을 찾고 원하는 텍스트 편집기에서 엽니다.Find the AcrHelloworld/Views/Home/Index.cshtml file in the application source you cloned from GitHub in a previous tutorial and open it in your favorite text editor. 기존 <h1> 줄 아래에 다음 줄을 추가합니다.Add the following line below the existing <h1> line:

<h1>MODIFIED</h1>

수정된 Index.cshtml은 다음과 유사하게 표시됩니다.Your modified Index.cshtml should look similar to:

@{
    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>

이미지 다시 빌드Rebuild the image

이제 웹 애플리케이션을 업데이트했으므로 해당 컨테이너 이미지를 다시 빌드합니다.Now that you've updated the web application, rebuild its container image. 이전처럼 로그인 서버의 FQDN(정규화된 도메인 이름)을 포함한 정규화된 이미지 이름을 태그에 사용합니다.As before, use the fully qualified image name, including the login server's fully qualified domain name (FQDN), for the tag:

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

Azure Container Registry에 이미지 푸시하기Push image to Azure Container Registry

다음으로, 지역 복제된 레지스트리에 업데이트된 acr-helloworld 컨테이너 이미지를 푸시합니다.Next, push the updated acr-helloworld container image to your geo-replicated registry. 여기에서 단일 docker push 명령을 실행하여 미국 서부미국 동부 지역 모두의 레지스트리 복제본에 업데이트된 이미지를 배포합니다.Here, you're executing a single docker push command to deploy the updated image to the registry replicas in both the West US and East US regions.

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

docker push 출력은 다음과 비슷합니다.Your docker push output should be similar to the following:

$ 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 로그 보기View the webhook logs

이미지가 복제 중인 동안 트리거되는 Azure Container Registry webhook를 볼 수 있습니다.While the image is being replicated, you can see the Azure Container Registry webhooks being triggered.

이전 자습서에서 Web App for Containers 에 컨테이너를 배포할 때 생성된 지역 webhook를 보려면 Azure Portal에서 컨테이너 레지스트리로 이동한 다음 서비스 아래에서 Webhook 를 선택합니다.To see the regional webhooks that were created when you deployed the container to Web Apps for Containers in a previous tutorial, navigate to your container registry in the Azure portal, then select Webhooks under SERVICES.

Azure Portal의 컨테이너 레지스트리 Webhook

각 Webhook를 선택하여 해당 호출 및 응답의 기록을 봅니다.Select each Webhook to see the history of its calls and responses. 두 Webhook의 로그에 푸시 작업에 대한 행이 표시됩니다.You should see a row for the push action in the logs of both Webhooks. 여기에서 미국 서부 지역에 있는 Webhook에 대한 로그는 이전 단계에서 docker push에 의해 트리거되는 푸시 동작을 보여 줍니다.Here, the log for the Webhook located in the West US region shows the push action triggered by the docker push in the previous step:

Azure Portal(미국 서부)의 컨테이너 레지스트리 Webhook 로그

업데이트된 웹앱 보기View the updated web app

Webhook는 두 지역 웹앱에 업데이트된 컨테이너를 자동으로 배포하는 레지스트리에 새 이미지가 푸시됐음을 Web Apps에 알립니다.The Webhooks notify Web Apps that a new image has been pushed to the registry, which automatically deploys the updated container to the two regional web apps.

웹 브라우저에서 두 지역 웹앱 배포로 이동하여 애플리케이션이 두 배포 모두에서 업데이트되었는지 확인합니다.Verify that the application has been updated in both deployments by navigating to both regional Web App deployments in your web browser. 참고로 각 App Service 개요 탭의 상단 오른쪽에서 배포된 웹앱에 대한 URL을 찾을 수 있습니다.As a reminder, you can find the URL for the deployed web app in the top-right of each App Service overview tab.

Azure Portal의 App Service 개요

업데이트된 애플리케이션을 보려면 App Service 개요에서 링크를 선택합니다.To see the updated application, select the link in the App Service overview. 미국 서부 에서 실행되는 앱의 예제 보기는 다음과 같습니다.Here's an example view of the app running in West US:

미국 서부 지역에서 실행되는 수정된 웹앱의 브라우저 보기

브라우저에서 확인하여 업데이트된 컨테이너 이미지가 미국 동부 배포에 배포되었는지 확인합니다.Verify that the updated container image was also deployed to the East US deployment by viewing it in your browser.

미국 동부 지역에서 실행되는 수정된 웹앱의 브라우저 보기

단일 docker push를 사용하여 두 지역 웹앱 배포에서 실행되는 웹 애플리케이션을 자동으로 업데이트했습니다.With a single docker push, you've automatically updated the web application running in both regional Web App deployments. 그리고 Azure Container Registry는 각 배포와 가장 가까이 있는 리포지토리의 컨테이너 이미지를 제공했습니다.And, Azure Container Registry served the container images from the repositories located closest to each deployment.

다음 단계Next steps

이 자습서에서는 지역에서 복제된 레지스트리에 새 버전의 웹 애플리케이션 컨테이너를 업데이트 및 푸시했습니다.In this tutorial, you updated and pushed a new version of the web application container to your geo-replicated registry. Azure Container Registry의 웹후크가 가장 가까운 레지스트리 복제본에서 로컬 끌어오기를 트리거하는 업데이트를 Web App for Containers에 알렸습니다.Webhooks in Azure Container Registry notified Web Apps for Containers of the update, which triggered a local pull from the nearest registry replica.

ACR Build: 자동화된 이미지 빌드 및 패치ACR Build: Automated image build and patch

지역 복제 외에도 ACR Build는 컨테이너 배포 파이프라인을 최적화할 수 있는 Azure Container Registry의 또 다른 기능입니다.In addition to geo-replication, ACR Build is another feature of Azure Container Registry that can help optimize your container deployment pipeline. ACR Build 개요부터 시작하여 그 기능을 알아보세요.Start with the ACR Build overview to get an idea of its capabilities:

ACR Build를 사용하여 OS 및 프레임워크 패치 자동화Automate OS and framework patching with ACR Build