在雲端中建置容器化的 Python Web 應用程式
本文是如何將 Python Web 應用程式容器化和部署至 Azure App Service 的教學課程的一部分。 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 容器註冊表中之後,即可部署到 Azure 應用服務。
此服務圖表會醒目提示本文所涵蓋的元件。
建立 Azure Container Registry
如果您已經有可使用的 Azure Container Registry,請移至下一個步驟。 如果沒有,請建立一個。
Azure CLI 命令可以在 Azure Cloud Shell 或已安裝 Azure CLI 的工作站上執行。 在 Cloud Shell 中執行時,請略過步驟 3 。
如有需要,請使用 az group create 命令來建立資源群組。 如果您已在本教學課程的第 部分「2. 本機建置及測試容器」中設定適用於 MongoDB 的 Azure Cosmos DB 帳戶,請將 RESOURCE_GROUP_NAME 環境變數設定為您用於該帳戶的資源群組名稱,然後移至下一個步驟。
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
。使用 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
值,這是完整限定的登錄名稱(全小寫格式),並且應該包含您指定的登錄名稱。如果您在本機執行 Azure CLI,請使用 az acr login 命令 登入容器登錄。
az acr login -n $REGISTRY_NAME
命令將「azurecr.io」加入名稱中,以建立完整的登錄名稱。 如果成功,您會看到「登入成功」訊息。
注意
Cloud Shell 中不需要或支援
az acr login
命令。
在 Azure Container Registry 中建置映像檔
您可以透過幾種方式直接在 Azure 中建置容器映像。 首先,您可以使用 Azure Cloud Shell 來建置映射,而不需使用本機環境。 您也可以使用 VS Code 或 Azure CLI,從本機環境建置 Azure 中的容器映射。 在雲端中建置映像不需要 Docker 在您的本機環境中執行。 如果您需要,您可以按照本教學課程第 2 部分中 的指示,複製或下載範例應用程式,以取得 Flask 或 Django 的範例 Web 應用程式。
Azure CLI 命令可以在已安裝
如果您正在本機執行 Azure CLI,且尚未使用 az acr login 命令登入至登錄機,請先登入。
az acr login -n $REGISTRY_NAME
如果您要從與建立登錄系統所在的訂用帳戶不同的訂用帳戶存取登錄系統,請使用
--suffix
切換項目。注意
不需要
az acr login
命令,且 Cloud Shell 中不支援。使用 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
相同)選項,命令只會將本地的內容建置排入佇列,而不會將其推送至註冊表。 在不推送的情況下建置映像檔有助於檢查映像檔是否成功建置。
確認已使用 az acr repository list 命令
建立容器映射。 az acr repository list -n $REGISTRY_NAME