개요: MongoDB를 사용하여 Azure에서 컨테이너화된 Python 웹앱
이 자습서에서는 Python 웹앱을 컨테이너화하고 Azure에 배포하는 방법을 보여줍니다. 단일 컨테이너 웹앱은 Azure App Service에 호스트되며, Azure Cosmos DB를 위해 MongoDB를 사용하여 데이터를 저장합니다. App Service Web App for Containers 사용하면 기본 컨테이너 오케스트레이터를 관리하고 유지 관리하는 데 신경 쓰지 않고도 컨테이너를 구성하는 데 집중할 수 있습니다. 웹앱을 빌드할 때 Azure App Service는 컨테이너를 사용하여 첫 번째 단계를 수행하는 데 적합한 옵션입니다. Azure에서 컨테이너를 사용하는 방법에 대한 자세한 내용은 Azure 컨테이너 옵션비교를 참조하세요.
이 자습서에서는 다음을 수행합니다.
로컬에서 Docker 컨테이너를 빌드하고 실행합니다. 이 단계는 선택 사항입니다.
Azure에서 직접 Docker 컨테이너 이미지를 빌드합니다.
Docker 컨테이너 이미지를 기반으로 웹앱을 만들도록 App Service를 구성합니다.
이 자습서에 따라 Python 웹앱의 CI(연속 통합) 및 CD(연속 배포)를 Azure에 사용할 수 있습니다.
서비스 개요
이 자습서를 지원하는 서비스 다이어그램은 두 가지 환경(개발자 환경 및 Azure)과 자습서에 사용된 다양한 Azure 서비스를 보여 줍니다.
이 자습서를 지원하고 위의 다이어그램에 표시된 구성 요소는 다음과 같습니다.
-
컨테이너화를 사용하도록 설정하는 기본 App Service 기능은 Web App for Containers입니다. Azure App Service는 Docker 컨테이너 기술을 사용하여 기본 제공 이미지와 사용자 지정 이미지를 모두 호스팅합니다. 이 자습서에서는 Python 코드에서 이미지를 빌드하고 Web App for Containers에 배포합니다.
Web App for Containers는 레지스트리의 웹후크를 사용하여 새 이미지에 대한 알림을 받습니다. 리포지토리에 새 이미지를 푸시하면 App Service가 이미지를 끌어오고 다시 시작합니다.
-
Azure Container Registry를 사용하면 Azure에서 Docker 이미지 및 해당 구성 요소를 사용할 수 있습니다. Azure의 배포와 가까운 레지스트리를 제공하며 액세스를 제어하여 Microsoft Entra 그룹 및 권한을 사용할 수 있습니다.
이 자습서에서 레지스트리 원본은 Azure Container Registry이지만 약간 수정된 Docker 허브 또는 프라이빗 레지스트리를 사용할 수도 있습니다.
-
MongoDB용 Azure Cosmos DB는 이 자습서에서 데이터를 저장하는 데 사용되는 NoSQL 데이터베이스입니다.
Azure Cosmos DB 리소스에 대한 액세스는 컨테이너화된 앱에 환경 변수로 전달되는 연결 문자열을 통해서입니다.
인증
이 자습서에서는 Docker 이미지(로컬 또는 Azure에서 직접)를 빌드하고 Azure App Service에 배포합니다. App Service는 Azure Container Registry 리포지토리에서 컨테이너 이미지를 끌어옵니다.
App Service는 관리 ID 사용하여 Azure Container Registry에서 이미지를 가져옵니다. 관리 ID를 사용하면 자격 증명을 지정할 필요 없이 다른 Azure 리소스에 액세스할 수 있도록 웹앱에 권한을 부여할 수 있습니다. 특히 이 자습서에서는 시스템 할당 관리 ID를 사용합니다. 관리 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 패키지:
샘플 앱
Python 샘플 앱은 MongoDB에서 레스토랑을 저장하고 데이터를 검토하는 레스토랑 리뷰 앱입니다. PostgreSQL을 사용하는 웹앱의 예는 관리 ID사용하여 Flask 웹앱을 만들고 Azure에 배포하는 방법을 참조하세요.
자습서의 끝부분에는 아래 스크린샷과 같은 식당 리뷰 앱이 Azure에서 배포되고 실행됩니다.