概觀:在 Azure Container Apps 上部署 Python Web 應用程式

本教學課程說明如何容器化 Python Web 應用程式,並將其部署至 Azure Container Apps。 範例 Web 應用程式將會容器化,以及儲存在 Azure Container Registry 中的 Docker 映像。 Azure Container Apps 已設定為從 Container Registry 提取 Docker 映射,並建立容器。 範例應用程式會連線到 適用於 PostgreSQL 的 Azure 資料庫,以示範 Container Apps 與其他 Azure 資源之間的通訊。

有數個選項可在 Azure 上建置和部署雲端原生和容器化的 Python Web 應用程式。 本教學課程涵蓋 Azure Container Apps。 容器應用程式適用於執行一般用途容器,特別是適用於跨容器中部署之許多微服務的應用程式。 在本教學課程中,您將建立一個容器。 若要將 Python Web 應用程式部署為容器以 Azure App 服務,請參閱 App Service 上的容器化 Python Web 應用程式。

在本教學課程中,您將:

  • 從 Python Web 應用程式建置 Docker 映射,並將映像儲存在 Azure Container Registry
  • 設定 Azure Container Apps 來裝載 Docker 映射。
  • 設定 GitHub Action ,以變更 GitHub 存放庫所觸發的新 Docker 映像來更新容器。 最後一個步驟是選擇性的。

在本教學課程之後,您將針對 Python Web 應用程式的持續整合 (CI) 和持續部署 (CD) 設定至 Azure。

服務預覽

本教學課程支持的服務圖表會示範本教學課程中如何使用本機環境、GitHub 存放庫和 Azure 服務。

A screenshot of the environments and services used in the Tutorial - Deploy a Python App on Azure Container Apps.

支援本教學課程並顯示在上圖中的元件如下:

  • Azure 容器應用程式

    • Azure 容器應用程式讓您在無伺服器平台上執行微服務和容器化應用程式。 無伺服器平臺表示您享有以最少組態執行容器的優點。 使用 Azure Container Apps,您的應用程式可以根據 HTTP 流量、事件驅動處理或 CPU 或記憶體負載等特性動態調整。
    • Container Apps 會從 Azure Container Registry 提取 Docker 映射。 容器映像的變更會觸發已部署容器的更新。 您也可以設定 GitHub Actions 來觸發更新。
  • Azure Container Registry

    • Azure Container Registry 可讓您在 Azure 中使用 Docker 映射。 由於 Container Registry 靠近您在 Azure 中的部署,因此您可以控制存取權,讓您能夠使用 Microsoft Entra 群組和許可權來控制 Docker 映射的存取權。
    • 在本教學課程中,登錄來源是 Azure Container Registry,但您也可以使用 Docker Hub 或私人登錄進行次要修改。
  • 適用於 PostgreSQL 的 Azure 資料庫

    • 範例程式代碼會將應用程式數據儲存在PostgreSQL資料庫中。
    • 容器應用程式會透過明確設定的環境變數,或使用 Azure 服務 連線 or 連線到 PostgreSQL。
  • GitHub

    • 本教學課程的範例程式代碼位於您將在本機分支和複製的 GitHub 存放庫中。 若要使用 GitHub Actions 設定 CI/CD 工作流程,您需要 GitHub 帳戶。
    • 您仍然可以遵循本教學課程,而不需要 GitHub 帳戶、在本機工作或在 Azure Cloud Shell運作,以從範例程式代碼存放庫建置容器映像。

修訂和 CI/CD

若要進行程式代碼變更,並將其推送至容器,請使用您的變更建立新的 Docker 映像。 然後,您會將映像推送至 Container Registry,並建立容器應用程式的新 修訂

若要將此程式自動化,本教學課程中的選擇性步驟會示範如何使用 GitHub Actions 建置持續整合和持續傳遞 (CI/CD) 管線。 每當新的認可推送至 GitHub 存放庫時,管線會自動建置程式代碼並部署到容器應用程式。

驗證與安全性

在本教學課程中,您將直接在 Azure 中建置 Docker 容器映像,並將其部署至 Azure Container Apps。 容器應用程式會在 Azure 虛擬網絡 s (VNet) 支援的環境中執行。 VNet 是 Azure 中專用網的基本建置組塊。 Container Apps 可讓您啟用輸入,將容器應用程式公開至公用 Web。

若要設定持續整合和持續傳遞 (CI/CD),您將授權 Azure Container Apps 作為 GitHub 帳戶的 OAuth 應用程式 。 作為 OAuth 應用程式,Container Apps 會將 GitHub Actions 工作流程檔案寫入存放庫,其中包含 Azure 資源和作業的相關信息以更新它們。 工作流程會使用 Microsoft Entra 服務主體的認證來更新 Azure 資源,並使用 Azure Container Registry 的角色型存取權和使用者名稱和密碼。 認證會安全地儲存在您的 GitHub 存放庫中。

最後,本教學課程範例 Web 應用程式會將資料儲存在 PostgreSQL 資料庫中。 範例程式代碼會透過 連接字串 連線到 PostgreSQL。 在容器應用程式的設定期間,本教學課程會逐步引導您設定包含連線資訊的環境變數。 您也可以使用 Azure 服務 連線 或完成相同的工作。

必要條件

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

範例應用程式

Python 範例應用程式是一種餐廳檢閱應用程式,可儲存 PostgreSQL 中的餐廳及檢閱數據。 在本教學課程結束時,您會在 Azure Container Apps 中部署並執行餐廳檢閱應用程式,其看起來如下的螢幕快照。

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

後續步驟