本教學課程系列說明如何容器化 Python Web 應用程式,然後在本機執行,或將其部署至 azure App Service 。 App Service 適用於容器的 Web 應用程式 可讓您專注於建置容器,而不必擔心管理和維護基礎容器協調器。 當您建置 Web 應用程式時,Azure App Service 是使用容器採取第一個步驟的絕佳選項。 此容器 Web 應用程式可以使用本機 MongoDB 實例或 MongoDB for Azure Cosmos DB 來儲存數據。 如需在 Azure 中使用容器的詳細資訊,請參閱 比較 Azure 容器選項。
在本教學課程中,您會:
在本機建置並執行 Docker 容器。 請參閱 在本機建置並執行容器化 Python Web 應用程式。
直接在 Azure 中建置 Docker 容器映像。 請參閱 在 Azure中建置容器化的 Python Web 應用程式。
設定 App Service 以根據 Docker 容器映像建立 Web 應用程式。 請參閱 將容器化的 Python 應用程式部署至 App Service。
完成本教學課程系列文章之後,您將有 Python Web 應用程式持續整合 (CI) 和持續部署 (CD) 至 Azure 的基礎。
服務概觀
支援本教學課程的服務圖表會顯示兩個環境:開發人員環境和 Azure 環境。 它會醒目提示開發程式中使用的主要 Azure 服務。
開發人員環境
本教學課程中支持開發人員環境的元件包括:
本機開發系統:用於編碼、建置及測試 Docker 容器的個人電腦。
Docker 容器化:Docker 可用來將應用程式及其相依性封裝到可攜式容器。
開發工具:包含程式代碼編輯器和其他軟體開發所需的工具。
本地 MongoDB 實例:開發期間用於資料儲存的本地 MongoDB 資料庫。
MongoDB 連線:存取透過連接字串提供的本機 MongoDB 資料庫。
Azure 環境
本教學課程中支援 Azure 環境的元件包括:
-
- 在 Azure App Service 中,適用於容器的 Web 應用程式會使用 Docker 容器技術,以使用 Docker 提供內建映像和自定義映射的容器裝載。
- 適用於容器的 Web 應用程式會使用 Azure Container Registry (ACR) 中的 Webhook 來取得新映像的通知。 當新的映像推送至登錄時,Webhook 通知會觸發 App Service 提取更新並重新啟動應用程式。
-
Azure Container Registry 可讓您在 Azure 中儲存和管理 Docker 映射及其元件。 它提供位於 Azure 中部署附近的登錄,可讓您使用 Microsoft Entra 群組和許可權來控制存取。
在本教學課程中,Azure Container Registry 是登錄來源,但您也可以使用 Docker Hub 或私人登錄進行次要修改。
-
適用於 MongoDB 的 Azure Cosmos DB 是本教學課程中用於數據記憶體的 NoSQL 資料庫。
容器化應用程式會使用連接字串來連線及存取 Azure Cosmos DB 資源,該連接字串會儲存為環境變數,並提供給應用程式。
認證
在本教學課程中,您會在本機或 Azure 中建置 Docker 映像,然後將其部署至 Azure App Service。 App Service 會從 Azure Container Registry 存放庫提取容器映射。
若要從存放庫安全地提取映像,App Service 會利用系統指派的受控識別。 此受控識別會授與 Web 應用程式與其他 Azure 資源互動的許可權,而不需要明確認證。 在本教學課程中,受控識別會在安裝App Service期間設定為使用登錄容器映像。
教學課程範例 Web 應用程式會使用 MongoDB 來儲存數據。 範例程式代碼會透過連接字串連線到 Azure Cosmos DB。
先決條件
若要完成本教學課程,您需要:
您可以建立的 Azure 帳戶:
- Azure 容器註冊表
- Azure 應用服務
- 適用於 MongoDB 的 Azure Cosmos DB(或同等資源的使用權限)。 若要建立適用於 MongoDB 的 Azure Cosmos DB 資料庫,請遵循本教學課程第 2 部分 的步驟。
視您選擇的工具而定,Visual Studio Code 或 Azure CLI。 如果您使用 Visual Studio Code,則需要 Docker 擴充功能,Azure App Service 擴充功能。
這些 Python 套件:
- MongoDB Shell (mongosh) 連線至 MongoDB。
- Flask 或 Django 作為 Web 架構。
Docker 安裝在本機。
範例應用程式
本教學課程的最終結果是在 Azure 中部署和執行的餐館檢閱應用程式,看起來如下的螢幕快照。
在本教學課程中,您會建置 Python 餐廳檢閱應用程式,以利用 MongoDB 進行數據儲存。 如需使用 PostgreSQL 的範例應用程式,請參閱 使用受控識別建立和部署 Flask Web 應用程式至 Azure。