在雲端中建置容器化的 Python Web 應用程式
本文是如何將 Python Web 應用程式容器化和部署至Azure App 服務的教學課程的一部分。 App Service 可讓您執行容器化 Web 應用程式,並透過 Docker Hub、Azure Container Registry 和 Visual Studio Team Services 的持續整合/持續部署 (CI/CD) 功能進行部署。 在本教學課程的這個部分中,您將瞭解如何在雲端中建置容器化的 Python Web 應用程式。
在本教學課程的上 一個選擇性 部分中,容器映射是在本機建置並執行。 相反地,在本教學課程的這個部分中,您會直接在 Azure Container Registry 中 將 Python Web 應用程式建置至 Docker 映射。 在 Azure 中建置映射通常比在本機建置更快、更輕鬆,然後將映射推送至登錄。 此外,在雲端中建置不需要 Docker 在開發環境中執行。
Docker 映射在 Azure Container Registry 中之後,即可部署到 Azure App Service。
以下顯示的服務圖表會反白顯示本文所涵蓋的元件。
1.建立 Azure Container Registry
如果您已經有可使用的 Azure Container Registry,請移至下一個步驟。 如果沒有,請建立一個。
Azure CLI 命令可以在 Azure Cloud Shell 或已安裝 Azure CLI 的 工作站上執行 。 在 Cloud Shell 中執行時,請略過 步驟 3 。
步驟 1: 如有需要, 請使用 az group create 命令建立資源群組。 如果您已在第 2 部分中 設定適用于 MongoDB 的 Azure Cosmos DB 帳戶。在本教學課程本機 建置及測試容器,將RESOURCE_GROUP_NAME設定為您用於該帳戶的資源群組名稱,然後移至步驟 2。
RESOURCE_GROUP_NAME='msdocs-web-app-rg'
LOCATION='eastus'
az group create -n $RESOURCE_GROUP_NAME -l $LOCATION
LOCATION 應該是 Azure 位置值。 選擇與您接近的位置。 您可以使用下列命令列出 Azure 位置值: az account list-locations -o table
。
步驟 2。 使用 az acr create 命令建立容器登錄。
REGISTRY_NAME='<your Azure Container Registry name>'
az acr create -g $RESOURCE_GROUP_NAME -n $REGISTRY_NAME --sku Basic
REGISTRY_NAME在 Azure 內必須是唯一的,且包含 5-50 個英數位元。
在命令的 JSON 輸出中,尋找 loginServer
值,這是完整的登錄名稱(全部小寫),且應該包含您指定的登錄名稱。
步驟 3。 如果您要在本機執行 Azure CLI,請使用 az acr login 命令登入登錄。
az acr login -n $REGISTRY_NAME
命令會將 「azurecr.io」 新增至名稱,以建立完整登錄名稱。 如果成功,您會看到「登入成功」訊息。
注意
az acr login
Cloud Shell 中不需要或支援命令。
2.在 Azure Container Registry 中建置映射
您可以透過幾種方式直接在 Azure 中建置容器映射。 首先,您可以使用 Azure Cloud Shell 來建置映射,而不需使用本機環境。 您也可以使用 VS Code 或 Azure CLI,從本機環境建置 Azure 中的容器映射。 在雲端中建置映射不需要 Docker 在您的本機環境中執行。 如果您需要,您可以遵循複製或下載本教學課程第 2 部分中的範例應用程式 中的指示 ,以取得範例 Flask 或 Django Web 應用程式。
Azure CLI 命令可以在已安裝 Azure CLI 的工作站 上執行,或在 Azure Cloud Shell 中 執行。 在 Cloud Shell 中執行時,請略過 步驟 1 。
步驟 1: 如果您要在本機執行 Azure CLI,如果您尚未使用 az acr login 命令登入 登錄。
az acr login -n $REGISTRY_NAME
如果您要從與建立登錄所在的訂用帳戶不同的訂用帳戶存取登錄,請使用 --suffix
參數。
注意
az acr login
Cloud Shell 中不需要或支援命令。
步驟 2。 使用 az acr build 命令建 置映射。
az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest .
在此命令中:
命令結尾的點 (「.」) 表示要建置的原始程式碼位置。 如果您未在範例應用程式根目錄中執行此命令,請指定程式碼的路徑。
您可以選擇性地指定範例 GitHub 存放庫的路徑,而不是您環境中的程式碼路徑: https://github.com/Azure-Samples/msdocs-python-django-container-web-app 或 https://github.com/Azure-Samples/msdocs-python-flask-container-web-app 。
如果您省略 [
-t
相同--image
] 選項,命令會將本機內容組建排入佇列,而不會將它推送至登錄。 在沒有推送的情況下建置對於檢查映射是否建置很有用。
步驟 3。 使用 az acr repository list 命令確認容器映射已建立 。
az acr repository list -n $REGISTRY_NAME