이 자습서 시리즈에서는 Python 웹앱을 컨테이너화한 다음 로컬로 실행하거나 Azure App Service에 배포하는 방법을 보여줍니다. 컨테이너용 App Service Web App을 사용하면 기본 컨테이너 오케스트레이터를 관리하고 유지 관리하는 데 신경 쓰지 않고도 컨테이너를 빌드하는 데 집중할 수 있습니다. 웹앱을 빌드할 때 Azure App Service는 컨테이너를 사용하여 첫 번째 단계를 수행하는 데 적합한 옵션입니다. 이 컨테이너 웹앱은 로컬 MongoDB 인스턴스 또는 Azure Cosmos DB용 MongoDB 를 사용하여 데이터를 저장할 수 있습니다. Azure에서 컨테이너를 사용하는 방법에 대한 자세한 내용은 Azure 컨테이너 옵션비교를 참조하세요.
이 자습서에서 수행하는 작업은 다음과 같습니다.
로컬에서 Docker 컨테이너를 빌드하고 실행합니다. 컨테이너화된 Python 웹앱 빌드 및 실행을 로컬로 참조하세요.
Azure에서 직접 Docker 컨테이너 이미지를 빌드합니다. Azure에서 컨테이너화된 Python 웹앱 빌드를 참조하세요.
Docker 컨테이너 이미지를 기반으로 웹앱을 만들도록 App Service를 구성합니다. App Service에 컨테이너화된 Python 앱 배포를 참조하세요.
이 자습서 시리즈의 문서를 완료하면 Python 웹앱의 CI(연속 통합) 및 CD(지속적인 배포)를 Azure에 사용할 수 있습니다.
서비스 개요
이 자습서를 지원하는 서비스 다이어그램은 개발자 환경과 Azure 환경이라는 두 가지 환경을 보여 줍니다. 개발 프로세스에 사용되는 주요 Azure 서비스를 강조 표시합니다.
개발자 환경
이 자습서의 개발자 환경을 지원하는 구성 요소는 다음과 같습니다.
로컬 개발 시스템: Docker 컨테이너 코딩, 빌드 및 테스트에 사용되는 개인용 컴퓨터입니다.
docker 컨테이너화 : Docker는 앱과 해당 종속성을 이식 가능한 컨테이너로 패키지하는 데 사용됩니다.
개발 도구: 코드 편집기 및 소프트웨어 개발에 필요한 기타 도구를 포함합니다.
로컬 MongoDB 인스턴스: 개발 중에 데이터 스토리지에 사용되는 로컬 MongoDB 데이터베이스입니다.
MongoDB 연결: 연결 문자열을 통해 제공되는 로컬 MongoDB 데이터베이스에 대한 액세스입니다.
Azure 환경
이 자습서에서 Azure 환경을 지원하는 구성 요소는 다음과 같습니다.
-
- Azure App Service에서 Web App for Containers는 Docker 컨테이너 기술을 사용하여 Docker를 사용하여 기본 제공 이미지와 사용자 지정 이미지의 컨테이너 호스팅을 제공합니다.
- Web App for Containers는 ACR(Azure Container Registry)의 웹후크를 사용하여 새 이미지에 대한 알림을 받습니다. 새 이미지가 레지스트리에 푸시되면 웹후크 알림은 App Service를 트리거하여 업데이트를 끌어와 앱을 다시 시작합니다.
-
Azure Container Registry를 사용하면 Azure에서 Docker 이미지 및 해당 구성 요소를 저장하고 관리할 수 있습니다. Microsoft Entra 그룹 및 사용 권한을 사용하여 액세스를 제어할 수 있는 기능을 제공하는 Azure의 배포 근처에 있는 레지스트리를 제공합니다.
이 자습서에서 Azure Container Registry는 레지스트리 원본이지만 약간 수정된 Docker 허브 또는 프라이빗 레지스트리를 사용할 수도 있습니다.
-
MongoDB용 Azure Cosmos DB는 이 자습서에서 데이터 스토리지에 사용되는 NoSQL 데이터베이스입니다.
컨테이너화된 애플리케이션은 환경 변수로 저장되고 앱에 제공되는 연결 문자열을 사용하여 Azure Cosmos DB 리소스에 연결하고 액세스합니다.
인증
이 자습서에서는 로컬 또는 Azure에서 Docker 이미지를 빌드한 다음 Azure App Service에 배포합니다. App Service는 Azure Container Registry 리포지토리에서 컨테이너 이미지를 끌어옵니다.
리포지토리에서 이미지를 안전하게 끌어오기 위해 App Service는 시스템 할당 관리 ID를 활용합니다. 이 관리 ID는 웹앱에 다른 Azure 리소스와 상호 작용할 수 있는 권한을 부여하므로 명시적 자격 증명이 필요하지 않습니다. 이 자습서의 경우 관리 ID는 레지스트리 컨테이너 이미지를 사용하도록 App Service를 설정하는 동안 구성됩니다.
자습서 샘플 웹앱은 MongoDB를 사용하여 데이터를 저장합니다. 샘플 코드는 연결 문자열을 통해 Azure Cosmos DB에 연결합니다.
필수 구성 요소
이 자습서를 완료하려면 다음이 필요합니다.
만들 수 있는 Azure 계정:
- Azure Container Registry
- Azure App Service
- Azure Cosmos DB for MongoDB (또는 동등한 항목에 대한 액세스). Azure Cosmos DB for MongoDB 데이터베이스를 만들려면 이 자습서의 2부에 있는 단계를 따릅니다.
선택한 도구에 따라 Visual Studio Code 또는 Azure CLI . Visual Studio Code를 사용하는 경우 Docker 확장 및 Azure App Service 확장이 필요합니다.
다음 Python 패키지:
- MongoDB에 연결하기 위한 MongoDB 셸(mongosh)
- Flask 또는 Django를 웹 프레임워크로.
샘플 앱
이 자습서의 최종 결과는 다음 스크린샷과 같이 Azure에서 배포되고 실행되는 식당 검토 앱입니다.
이 자습서에서는 데이터 스토리지에 MongoDB를 활용하는 Python 레스토랑 검토 앱을 빌드합니다. PostgreSQL을 사용하는 예제 앱은 관리 ID를 사용하여 Flask 웹앱 만들기 및 Azure에 배포를 참조하세요.