概觀:使用 MongoDB 在 Azure 上容器化的 Python Web 應用程式

本教學課程說明如何容器化 Python Web 應用程式,並將其部署至 Azure。 單一容器 Web 應用程式裝載于 Azure App 服務 ,並使用 MongoDB for Azure Cosmos DB 來儲存資料。 App Service Web App for Containers 可讓您專注于撰寫容器,而不必擔心管理和維護基礎容器協調器。 建置 Web 應用程式時,Azure App 服務是使用容器採取第一個步驟的絕佳選項。 如需在 Azure 中使用容器的詳細資訊,請參閱 比較 Azure 容器選項

在本教學課程中,您將:

  • 在本機建置並執行 Docker 容器。 此步驟是選擇性的

  • 直接在 Azure 中建置 Docker 容器映射。

  • 設定 App Service 以根據 Docker 容器映射建立 Web 應用程式。

在本教學課程之後,您將具備 Python Web 應用程式持續整合 (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 應用程式。 Azure App 服務使用 裝載內建映射和自訂映射的 Docker 容器技術。 在本教學課程中,您將從 Python 程式碼建置映射,並將其部署至適用于容器的 Web 應用程式。

    • 適用于容器的 Web 應用程式會使用登錄中的 Webhook 來取得新映射的通知。 將新映射推送至存放庫會觸發 App Service 來提取映射並重新啟動。

  • Azure Container Registry

    • Azure Container Registry 可讓您在 Azure 中使用 Docker 映射及其元件。 它提供接近您在 Azure 中部署的登錄,可讓您控制存取權,讓您能夠使用您的 Microsoft Entra 群組和許可權。

    • 在本教學課程中,登錄來源是 Azure Container Registry,但您也可以使用 Docker Hub 或私人登錄進行次要修改。

  • Azure Cosmos DB for MongoDB

    • 適用于 MongoDB 的 Azure Cosmos DB 是本教學課程中用來儲存資料的 NoSQL 資料庫。

    • Azure Cosmos DB 資源的存取權是透過連接字串,以環境變數的形式傳遞至容器化應用程式。

驗證

在本教學課程中,您將建置 Docker 映射(本機或直接在 Azure 中),並將其部署至Azure App 服務。 App Service 會從 Azure Container Registry 存放庫提取容器映射。

App Service 會使用 受控識別 從 Azure Container Registry 提取映射。 受控識別可讓您將許可權授與 Web 應用程式,使其可以存取其他 Azure 資源,而不需要指定認證。 具體而言,本教學課程會使用系統指派的受控識別。 受控識別會在安裝 App Service 期間設定為使用登錄容器映射。

教學課程範例 Web 應用程式會使用 MongoDB 來儲存資料。 範例程式碼會透過連接字串連線到 Azure Cosmos DB。

必要條件

若要完成此課程,您會需要:

範例應用程式

Python 範例應用程式是一種餐廳檢閱應用程式,可儲存 MongoDB 中的餐廳及檢閱資料。 如需使用 PostgreSQL 的 Web 應用程式範例,請參閱 使用受控識別 建立 Flask Web 應用程式並將其部署至 Azure。

在本教學課程結束時,您會在 Azure 中部署並執行餐廳檢閱應用程式,其看起來如下的螢幕擷取畫面。

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

後續步驟