자습서 시리즈의 이 부분에서는 Docker를 로컬로 설치하지 않고 Azure Container Registry 에서 직접 컨테이너화된 Python 웹앱을 빌드하는 방법을 알아봅니다. Azure에서 Docker 이미지를 빌드하는 것은 이미지를 로컬로 만든 다음 Azure Container Registry에 푸시하는 것보다 더 빠르고 쉬운 경우가 많습니다. 또한 클라우드 기반 이미지 빌드를 사용하면 개발 환경에서 Docker를 실행할 필요가 없습니다.
App Service를 사용하면 컨테이너화된 웹앱을 실행하고 Docker Hub, Azure Container Registry 및 Visual Studio Team Services의 CI/CD(연속 통합/지속적인 배포) 기능을 통해 배포할 수 있습니다. 이 문서는 Python 웹앱을 컨테이너화하고 Azure App Service에 배포하는 방법에 대한 5부로 구성된 자습서 시리즈의 3부입니다. 자습서의 이 부분에서는 Azure에서 컨테이너화된 Python 웹앱을 빌드하는 방법을 알아봅니다.
Azure App Service를 사용하면 Docker Hub, Azure Container Registry 및 Azure DevOps와 같은 플랫폼에서 CI/CD 파이프라인을 사용하여 컨테이너화된 웹앱을 배포하고 실행할 수 있습니다. 이 문서는 5부로 구성된 자습서 시리즈의 3부입니다.
이 자습서 시리즈의 2부에서는 컨테이너 이미지를 로컬로 빌드하고 실행했습니다. 반면, 자습서의 이 부분에서는 동일한 Python 웹앱을 Azure Container Registry의 Docker 이미지에 직접 빌드(컨테이너화)합니다. Azure에서 이미지를 빌드하는 것은 일반적으로 로컬로 빌드한 다음 레지스트리에 이미지를 푸시하는 것보다 더 빠르고 쉽습니다. 또한 클라우드에서 빌드해도 Docker가 개발 환경에서 실행될 필요가 없습니다.
Docker 이미지가 Azure Container Registry에 있으면 Azure App Service에 배포할 수 있습니다.
이 서비스 다이어그램은 이 문서에서 다루는 구성 요소를 강조 표시합니다.
Azure Container Registry 만들기
사용하려는 기존 Azure Container Registry가 있는 경우 다음 단계를 건너뛰고 다음 단계를 진행합니다. 그렇지 않으면 Azure CLI를 사용하여 새 Azure Container Registry를 만듭니다.
Azure CLI 명령은 Azure Cloud Shell 또는 AzureCLI가 설치된 로컬 개발 환경에서 실행할 수 있습니다.
메모
이 자습서 시리즈의 2부와 동일한 이름을 사용합니다.
az acr create 명령을 사용하여 Azure Container Registry를 만듭니다.
#!/bin/bash # Use the resource group that you created in part 2 of this tutorial series. RESOURCE_GROUP_NAME='msdocs-web-app-rg' # REGISTRY_NAME must be unique within Azure and contain 5-50 alphanumeric characters. REGISTRY_NAME='msdocscontainerregistryname' echo "Creating Azure Container Registry $REGISTRY_NAME..." az acr create -g $RESOURCE_GROUP_NAME -n $REGISTRY_NAME --sku Standard명령의 JSON 출력에서 값을 찾습니다
loginServer. 이 값은 정규화된 레지스트리 이름(모두 소문자)을 나타내며 레지스트리 이름을 포함합니다.로컬 컴퓨터에서 Azure CLI를 사용하는 경우 az acr login 명령을 실행하여 컨테이너 레지스트리에 로그인합니다.
az acr login -n $REGISTRY_NAME이 명령은 이름에 "azurecr.io"를 추가하여 정규화된 레지스트리 이름을 만듭니다. 성공하면 "로그인 성공"이라는 메시지가 표시됩니다.
메모
Azure Cloud Shell에서는 인증이 Cloud Shell 세션을 통해 자동으로 처리되므로 az
acr login command가 필요하지 않습니다. 그러나 인증 문제가 발생하는 경우에도 계속 사용할 수 있습니다.
Azure Container Registry에서 이미지 빌드
다양한 방법을 통해 Azure에서 직접 컨테이너 이미지를 생성할 수 있습니다.
- Azure Cloud Shell을 사용하면 로컬 환경과 관계없이 완전히 클라우드에서 이미지를 생성할 수 있습니다.
- 또는 로컬에서 Docker를 실행하지 않고도 VS Code 또는 Azure CLI를 사용하여 로컬 설정에서 Azure에서 만들 수 있습니다.
Azure CLI 명령은 Azure CLI가 설치된 로컬 개발 환경 또는 Azure Cloud Shell에서 실행할 수 있습니다.
콘솔에서 이 자습서 시리즈의 2부에서 복제된 리포지토리의 루트 폴더로 이동합니다.
az acr build 명령을 사용하여 컨테이너 이미지를 빌드합니다.
az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest . # When using Azure Cloud Shell, run one of the following commands instead: # az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest https://github.com/Azure-Samples/msdocs-python-django-container-web-app.git # az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest https://github.com/Azure-Samples/msdocs-python-flask-container-web-app.git명령의 마지막 인수는 리포지토리에 대한 정규화된 경로입니다. Azure Cloud Shell에서 실행하는 경우 Django 샘플 앱 및 https://github.com/Azure-Samples/msdocs-python-django-container-web-app.git Flask 샘플 앱에 사용합니다https://github.com/Azure-Samples/msdocs-python-flask-container-web-app.git.
az acr repository list 명령을 사용하여 컨테이너 이미지가 만들어졌는지 확인합니다.
az acr repository list -n $REGISTRY_NAME