共用方式為


教學:學習如何在 Azure Container Apps 部署 Python 網頁應用的概覽概念

這個教學系列將教你如何將Python網頁應用程式容器化,並部署到 Azure Container Apps。 範例網頁應用程式會被容器化,Docker 映像檔則儲存在 Azure Container Registry。 Azure Container Apps 設定為從容器登錄檔拉取 Docker 映像並建立容器。 範例應用程式連接 Azure Database for PostgreSQL,以展示容器應用程式與其他Azure資源之間的通訊。

在 Azure 上有多種選項可以建置並部署雲端原生及容器化的 Python 網頁應用程式。 這個教學系列涵蓋了 Azure Container Apps。 容器應用程式適用於執行一般用途容器,特別是適用於跨容器中部署許多微服務的應用程式。

在本教學課程系列中,您會建立一個容器。 若要將 Python Web 應用程式部署作為 Azure App Service 的容器,請參考 Containerized Python web app on Azure with MongoDB

本教學課程系列中的程序會引導您完成這些工作:

  • 從Python網頁應用程式建立一個 Docker 映像檔,並將映像檔儲存在 Azure Container Registry
  • 設定 Azure Container Apps 來架設 Docker 映像檔。
  • 設定 GitHub Actions,讓容器因 GitHub 倉庫變更而觸發新的 Docker 映像檔。 這個步驟是選擇性的。
  • 建立持續整合與持續交付(CI/CD),將一個 Python 網頁應用程式帶到 Azure。

在本系列的第一部分,您將學習在 Azure Container Apps 上部署 Python 網頁應用程式的基礎概念。

服務概觀

以下圖表展示了你在本機環境、GitHub 倉庫以及 Azure 服務中,如何使用這個教學系列。

用於在 Azure Container Apps 上部署 Python 網頁應用程式的環境與服務圖。

此圖表包含下列元件:

  • Azure Container Apps

    Azure Container Apps 讓你能在無伺服器平台上運行微服務和容器化應用程式。 無伺服器平臺表示您享有以最少組態執行容器的優點。 透過 Azure Container Apps,您的應用程式可根據 HTTP 流量、事件驅動處理,或 CPU 或記憶體負載等特性動態擴展。

    Container Apps 會從 Azure Container Registry 拉取 Docker 映像。 容器映像的變更會觸發已部署容器的更新。 你也可以設定 GitHub Actions 來觸發更新。

  • Azure Container Registry

    Azure Container Registry 讓你能在 Azure 中操作 Docker 映像。 因為容器登錄檔靠近你在 Azure 的部署,你可以控制存取權限。 你可以利用 Microsoft Entra 群組和權限來控制對 Docker 映像的存取。

    在本教學系列中,登錄檔來源是 Azure Container Registry。 但你也可以用 Docker Hub 或私有登錄檔,只要做些小修改。

  • Azure Database for PostgreSQL

    範例程式代碼會將應用程式數據儲存在PostgreSQL資料庫中。 容器應用程式會使用 用戶指派的受控識別連線到 PostgreSQL。 連線資訊儲存在環境變數中,這些變數可透過明確設定或 Azure 服務連接器 進行設定。

  • GitHub

    這個教學系列的範例程式碼在 GitHub 倉庫裡,你可以在本地分叉和複製。 要用 GitHub Actions 來設定 CI/CD 工作流程,你需要一個 GitHub 帳號。

    如果你在本地或在 Azure Cloud Shell 工作,從範例程式碼庫建立容器映像檔,仍然可以跟著這個教學系列操作,不用 GitHub 帳號。

修訂和 CI/CD

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

為了自動化這個流程,教學系列中的一個選用步驟會教你如何使用 GitHub Actions 建立 CI/CD 管線。 每當有新的提交推送到你的 GitHub 倉庫時,管線會自動建置並部署你的程式碼到 Container Apps。

驗證和安全性

在這個教學系列中,你會直接在 Azure 中建立一個 Docker 容器映像,並部署到 Azure Container Apps。 容器應用程式運行於 environment,該環境由 Azure 虛擬網路 支援。 虛擬網路是 Azure 私有網路的基本建構模組。 Container Apps 可讓您啟用輸入,將容器應用程式公開至公用 Web。

要設定 CI/CD,你需要授權 Azure Container Apps 成為你的 GitHub 帳號的OAuth 應用程式。 作為 OAuth 應用程式,容器應用會寫入 GitHub Actions 工作流程檔案到你的倉庫,並包含 Azure 資源及更新工作資訊。 此工作流程使用 Microsoft Entra 服務主體的憑證(或現有的服務主體)來更新 Azure 資源,對容器應用程式具備角色基礎的存取權,並使用 Azure Container Registry 的使用者名稱和密碼進行身份驗證。 憑證會安全地儲存在你的 GitHub 倉庫中。

最後,本教學課程系列中的範例 Web 應用程式會將資料儲存在 PostgreSQL 資料庫中。 範例程式碼透過 connection string 連接到 PostgreSQL。 當應用程式在 Azure 上執行時,會透過使用者指定的管理身份連接到 PostgreSQL 資料庫。 程式碼使用 DefaultAzureCredential 在執行階段,以 Microsoft Entra 存取權杖動態更新連接字串中的密碼。 此機制避免了將密碼硬編碼在 connection string 或環境變數中,並提供額外的安全層。

本教學課程系列會逐步引導您建立受控識別,並授與適當的 PostgreSQL 角色和許可權,讓其可以存取和更新資料庫。 在容器應用程式的設定期間,本教學課程系列會逐步引導您在應用程式上設定受控識別,以及設定包含資料庫連線資訊的環境變數。 你也可以用 Azure 服務連接器來達成同樣的效果。

先決條件

若要完成本教學課程系列,您需要:

  • 一個 Azure 帳號,你可以在那裡建立:

    • 一個 Azure 容器註冊表實例。
    • Azure Container Apps 環境
    • Azure Database for PostgreSQL 實例。
  • Visual Studio CodeAzure CLI,視你使用的工具而定:

  • Python 套件:

範例應用程式

Python 範例應用程式是一款餐廳評論應用程式,會將餐廳和評論資料儲存在 PostgreSQL 中。 在教學系列結束時,你會有一個餐廳評論應用程式部署並運行於 Azure Container Apps,看起來像以下截圖。

從一個Python容器化網頁應用程式製作的範例應用程式截圖。

下一步

用 Azure Container Apps 和 PostgreSQL