클라우드에서 컨테이너화된 Python 웹앱 빌드
이 문서는 Python 웹앱을 컨테이너화하고 Azure 앱 Service에 배포하는 방법에 대한 자습서의 일부입니다. App Service를 사용하면 컨테이너화된 웹앱을 실행하고 Docker Hub, Azure Container Registry 및 Visual Studio Team Services를 사용하여 CI/CD(지속적인 통합/지속적인 배포) 기능을 통해 배포할 수 있습니다. 자습서의 이 부분에서는 클라우드에서 컨테이너화된 Python 웹앱을 빌드하는 방법을 알아봅니다.
이 자습서의 이전 선택적 부분에서 컨테이너 이미지는 로컬로 빌드되고 실행되었습니다. 반면, 자습서의 이 부분에서는 Python 웹앱을 Azure Container Registry에서 직접 Docker 이미지로 빌드(컨테이너화)합니다. Azure에서 이미지를 빌드하는 것은 일반적으로 로컬로 빌드한 다음 레지스트리에 이미지를 푸시하는 것보다 더 빠르고 쉽습니다. 또한 클라우드에서 빌드해도 Docker가 개발 환경에서 실행될 필요가 없습니다.
Docker 이미지가 Azure Container Registry에 있으면 Azure 앱 서비스에 배포할 수 있습니다.
아래에 표시된 서비스 다이어그램은 이 문서에서 다루는 구성 요소를 강조 표시합니다.
1. Azure Container Registry 만들기
사용할 수 있는 Azure Container Registry가 이미 있는 경우 다음 단계로 이동합니다. 그렇지 않으면 만듭니다.
Azure CLI 명령은 Azure Cloud Shell에서 실행하거나 Azure CLI가 설치된 워크스테이션에서 실행할 수 있습니다. Cloud Shell에서 실행하는 경우 3단계를 건너뜁 니다.
1단계. az group create 명령을 사용하여 필요한 경우 리소스 그룹을 만듭니 다. 2부 에서 MongoDB용 Azure Cosmos DB 계정을 이미 설정한 경우 이 자습서의 컨테이너를 로컬로 빌드하고 테스트하고, RESOURCE_GROUP_NAME 해당 계정에 사용한 리소스 그룹의 이름으로 설정하고, 2단계로 이동합니다.
RESOURCE_GROUP_NAME='msdocs-web-app-rg'
LOCATION='eastus'
az group create -n $RESOURCE_GROUP_NAME -l $LOCATION
LOCATION은 Azure 위치 값이어야 합니다. 사용자에게 가까운 위치를 선택합니다. 다음 명령을 az account list-locations -o table
사용하여 Azure 위치 값을 나열할 수 있습니다.
2단계. az acr create 명령을 사용하여 컨테이너 레지스트리를 만듭니 다.
REGISTRY_NAME='<your Azure Container Registry name>'
az acr create -g $RESOURCE_GROUP_NAME -n $REGISTRY_NAME --sku Basic
REGISTRY_NAME Azure 내에서 고유해야 하며 5-50자 영숫자를 포함해야 합니다.
명령의 JSON 출력에서 정규화된 레지스트리 이름(모두 소문자)이며 지정한 레지스트리 이름을 포함해야 하는 값을 찾 loginServer
습니다.
3단계 Azure CLI를 로컬로 실행하는 경우 az acr login 명령을 사용하여 레지스트리에 로그인합니다.
az acr login -n $REGISTRY_NAME
이 명령은 이름에 "azurecr.io"를 추가하여 정규화된 레지스트리 이름을 만듭니다. 성공하면 "로그인 성공"이라는 메시지가 표시됩니다.
참고 항목
Cloud az acr login
Shell에서는 명령이 필요하거나 지원되지 않습니다.
2. Azure Container Registry에서 이미지 빌드
몇 가지 방법으로 Azure에서 직접 컨테이너 이미지를 빌드할 수 있습니다. 먼저 로컬 환경을 전혀 사용하지 않고 이미지를 빌드하는 Azure Cloud Shell을 사용할 수 있습니다. VS Code 또는 Azure CLI를 사용하여 로컬 환경에서 Azure에서 컨테이너 이미지를 빌드할 수도 있습니다. 클라우드에서 이미지를 빌드해도 Docker가 로컬 환경에서 실행될 필요는 없습니다. 필요한 경우 복제의 지침을 따르거나 이 자습서의 2부에서 샘플 앱을 다운로드하여 샘플 Flask 또는 Django 웹앱을 가져올 수 있습니다.
Azure CLI 명령은 Azure CLI가 설치된 워크스테이션 또는 Azure Cloud Shell에서 실행할 수 있습니다. Cloud Shell에서 실행하는 경우 1단계를 건너뜁니다.
1단계. Azure CLI를 로컬로 실행하는 경우 az acr login 명령을 사용하여 아직 실행하지 않은 경우 레지스트리에 로그인합니다.
az acr login -n $REGISTRY_NAME
레지스트리를 만든 구독과 다른 구독에서 레지스트리에 액세스하는 경우 스위치를 --suffix
사용합니다.
참고 항목
Cloud az acr login
Shell에서는 명령이 필요하거나 지원되지 않습니다.
2단계. az acr build 명령을 사용하여 이미지를 빌드 합니다.
az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest .
이 명령에서 다음을 수행합니다.
명령의 끝에 있는 점(".")은 빌드할 소스 코드의 위치를 나타냅니다. 샘플 앱 루트 디렉터리에서 이 명령을 실행하지 않는 경우 코드 경로를 지정합니다.
사용자 환경의 코드 경로 대신 필요에 따라 샘플 GitHub 리포지토리 https://github.com/Azure-Samples/msdocs-python-django-container-web-app 에 대한 경로를 지정할 수 있습니다. 또는 https://github.com/Azure-Samples/msdocs-python-flask-container-web-app.
(동일한
--image
) 옵션을 제외-t
하면 명령은 로컬 컨텍스트 빌드를 레지스트리에 푸시하지 않고 큐에 대기합니다. 푸시하지 않고 빌드하면 이미지가 빌드되는 검사 데 유용할 수 있습니다.
3단계 az acr repository list 명령을 사용하여 컨테이너 이미지가 만들어졌는지 확인합니다.
az acr repository list -n $REGISTRY_NAME