개요: MongoDB를 사용하여 Azure에서 컨테이너화된 Python 웹앱

이 자습서에서는 Python 웹앱을 컨테이너화하고 Azure에 배포하는 방법을 보여줍니다. 단일 컨테이너 웹앱은 Azure 앱 Service에서 호스트되며 Azure Cosmos DB용 MongoDB를 사용하여 데이터를 저장합니다. App Service Web App for Containers를 사용하면 기본 컨테이너 오케스트레이터를 관리하고 기본 걱정 없이 컨테이너를 구성하는 데 집중할 수 있습니다. 웹앱을 빌드할 때 Azure 앱 Service는 컨테이너를 사용하여 첫 번째 단계를 수행하는 데 적합한 옵션입니다. Azure에서 컨테이너를 사용하는 방법에 대한 자세한 내용은 Azure 컨테이너 옵션 비교를 참조 하세요.

이 자습서에서는 다음 작업을 수행합니다.

  • Docker 컨테이너를 로컬로 빌드하고 실행합니다. 이 단계는 선택 사항입니다.

  • Azure에서 직접 Docker 컨테이너 이미지를 빌드합니다.

  • Docker 컨테이너 이미지를 기반으로 웹앱을 만들도록 App Service를 구성합니다.

이 자습서에 따라 Python 웹앱의 CI(연속 통합) 및 CD(연속 배포)를 Azure에 사용할 수 있습니다.

서비스 개요

이 자습서를 지원하는 서비스 다이어그램은 두 가지 환경(개발자 환경 및 Azure)과 자습서에 사용된 다양한 Azure 서비스를 보여 줍니다.

A screenshot of the services using in the Tutorial - Containerized Python App on Azure.

이 자습서를 지원하고 위의 다이어그램에 표시된 구성 요소는 다음과 같습니다.

  • Azure App Service

    • 컨테이너화를 사용하도록 설정하는 기본 App Service 기능은 Web App for Containers입니다. Azure 앱 Service는 다음을 사용합니다.기본 제공 이미지와 사용자 지정 이미지를 모두 호스트하는 Docker 컨테이너 기술입니다. 이 자습서에서는 Python 코드에서 이미지를 빌드하고 Web App for Containers에 배포합니다.

    • Web App for Containers는 레지스트리의 웹후크를 사용하여 새 이미지에 대한 알림을 받습니다. 리포지토리에 새 이미지를 푸시하면 App Service가 이미지를 끌어오고 다시 시작합니다.

  • Azure Container Registry

    • Azure Container Registry를 사용하면 Azure에서 Docker 이미지 및 해당 구성 요소를 사용할 수 있습니다. Azure의 배포와 가까운 레지스트리를 제공하며 액세스를 제어하여 Microsoft Entra 그룹 및 권한을 사용할 수 있습니다.

    • 이 자습서에서 레지스트리 원본은 Azure Container Registry이지만 약간 수정된 Docker 허브 또는 프라이빗 레지스트리를 사용할 수도 있습니다.

  • Azure Cosmos DB for MongoDB

    • MongoDB용 Azure Cosmos DB는 이 자습서에서 데이터를 저장하는 데 사용되는 NoSQL 데이터베이스입니다.

    • Azure Cosmos DB 리소스에 대한 액세스는 연결 문자열 통해 컨테이너화된 앱에 환경 변수로 전달됩니다.

인증

이 자습서에서는 Docker 이미지(로컬 또는 Azure에서 직접)를 빌드하고 Azure 앱 Service에 배포합니다. App Service는 Azure Container Registry 리포지토리에서 컨테이너 이미지를 끌어옵니다.

App Service는 관리 ID를 사용하여 Azure Container Registry에서 이미지를 가져옵니다. 관리 ID를 사용하면 자격 증명을 지정할 필요 없이 다른 Azure 리소스에 액세스할 수 있도록 웹앱에 권한을 부여할 수 있습니다. 특히 이 자습서에서는 시스템 할당 관리 ID를 사용합니다. 관리 ID는 레지스트리 컨테이너 이미지를 사용하도록 App Service를 설정하는 동안 구성됩니다.

자습서 샘플 웹앱은 MongoDB를 사용하여 데이터를 저장합니다. 샘플 코드는 연결 문자열 통해 Azure Cosmos DB에 연결합니다.

필수 조건

이 자습서를 완료하려면 다음이 필요합니다.

샘플 앱

Python 샘플 앱은 MongoDB에서 레스토랑을 저장하고 데이터를 검토하는 레스토랑 리뷰 앱입니다. PostgreSQL을 사용하는 웹앱의 예는 관리 ID를 사용하여 Flask 웹앱 만들기 및 Azure에 배포를 참조 하세요.

자습서의 끝부분에는 아래 스크린샷과 같은 식당 리뷰 앱이 Azure에서 배포되고 실행됩니다.

A screenshot of the sample app created from the Python containerized web app used in the Tutorial - Containerized Python App on Azure.

다음 단계