클라우드에서 컨테이너화된 Python 웹앱 빌드
이 문서는 Python 웹앱을 컨테이너화하고 Azure App Service에 배포하는 방법에 대한 자습서의 일부입니다. App Service를 사용하면 컨테이너화된 웹앱을 실행하고 Docker Hub, Azure Container Registry 및 Visual Studio Team Services를 사용하여 CI/CD(지속적인 통합/지속적인 배포) 기능을 통해 배포할 수 있습니다. 자습서의 이 부분에서는 클라우드에서 컨테이너화된 Python 웹앱을 빌드하는 방법을 알아봅니다.
이 자습서의 이전 선택적 부분에서 컨테이너 이미지가 빌드되고 로컬로 실행되었습니다. 반면, 자습서의 이 부분에서는 Azure Container Registry에서 Python 웹앱을 컨테이너화하여 Docker 이미지로 직접 빌드합니다
Docker 이미지가 Azure Container Registry에 있으면 Azure App Service에 배포할 수 있습니다.
이 서비스 다이어그램은 이 문서에서 다루는 구성 요소를 강조 표시합니다.
Azure Container Registry 만들기
사용할 수 있는 Azure Container Registry가 이미 있는 경우 다음 단계로 이동합니다. 그렇지 않으면 하나 만드세요.
Azure CLI 명령은 Azure Cloud Shell 또는 Azure CLI가 설치된 워크스테이션에서 실행할 수. Cloud Shell에서 실행하는 경우 3단계를 건너뜁니다.
필요한 경우 az group create 명령을 사용하여 리소스 그룹을 만듭니다. 이미 Azure Cosmos DB for MongoDB 계정을 이 자습서의 2부 "컨테이너를 로컬에서 빌드하고 테스트하기"에서 설정한 경우, RESOURCE_GROUP_NAME 환경 변수를 해당 계정에 사용한 리소스 그룹의 이름으로 설정하고 다음 단계로 이동합니다.
RESOURCE_GROUP_NAME='msdocs-web-app-rg' LOCATION='eastus' az group create -n $RESOURCE_GROUP_NAME -l $LOCATION
LOCATION은 Azure 위치 값이어야 합니다. 가까운 위치를 선택합니다. 다음 명령을 사용하여 Azure 위치 값을 나열할 수 있습니다.
az account list-locations -o table
.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
값, 즉 지정한 레지스트리 이름을 포함해야 하는 정규화된 전체 레지스트리 이름(모두 소문자)을 찾습니다.Azure CLI를 로컬로 실행하는 경우 az acr login 명령을 사용하여 레지스트리에 로그인합니다.
az acr login -n $REGISTRY_NAME
이 명령은 이름에 "azurecr.io"를 추가하여 정규화된 레지스트리 이름을 만듭니다. 성공하면 "로그인 성공"이라는 메시지가 표시됩니다.
메모
az acr login
명령은 Cloud Shell에서 필요하거나 지원되지 않습니다.
Azure Container Registry에서 이미지 빌드
몇 가지 방법으로 Azure에서 직접 컨테이너 이미지를 빌드할 수 있습니다. 먼저 로컬 환경을 전혀 사용하지 않고 이미지를 빌드하는 Azure Cloud Shell을 사용할 수 있습니다. VS Code 또는 Azure CLI를 사용하여 로컬 환경에서 Azure에서 컨테이너 이미지를 빌드할 수도 있습니다. 클라우드에서 이미지를 빌드해도 Docker가 로컬 환경에서 실행될 필요는 없습니다. 필요한 경우 복제의 지침을 따르거나 이 자습서의 2부에서 샘플 앱 다운로드하여 샘플 Flask 또는 Django 웹앱을 가져올 수 있습니다.
Azure CLI 명령은 설치된
Azure CLI를 로컬로 실행하는 경우 az acr login 명령을 사용하여 아직 로그인하지 않은 경우 레지스트리에 로그인합니다.
az acr login -n $REGISTRY_NAME
레지스트리가 생성된 구독과 다른 구독에서 해당 레지스트리에 액세스해야 하는 경우,
--suffix
스위치를 사용하세요.메모
az acr login
명령은 필요하지 않으며 Cloud Shell에서 지원되지 않습니다.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)를 지정할 수 있습니다.
-t
(--image
와 동일) 옵션을 제외하면 명령은 레지스트리에 푸시하지 않고 로컬 컨텍스트 빌드를 큐에 대기합니다. 푸시하지 않고 빌드하면 이미지가 빌드되는지 확인하는 데 유용할 수 있습니다.
az acr repository list 명령을 사용하여 컨테이너 이미지가 만들어졌는지 확인합니다.
az acr repository list -n $REGISTRY_NAME