本文是關於容器化與部署 Python 網頁應用程式到 Azure App 服務 的五部分教學系列的第三部分。 在 第 2 部分中,你在本機上建置並執行了容器映像。 本文中,你可以直接在
Azure App 服務 可讓您使用 Docker Hub、Azure Container Registry 和 Azure DevOps 等平台的 CI/CD 管線來部署和執行容器化 Web 應用程式。 當 Docker 映像檔進入 Azure Container Registry 後,你可以部署到 Azure App 服務。
先決條件
在開始之前,請確保你已完成 這個教學系列的第二部分,內容涵蓋:
- 複製樣本庫(Django 或 Flask)。
- 建立 Azure 資源的資源群組。
- 在本地執行容器化應用程式以確認其運作。
您也會需要:
- 有效的 Azure 訂用帳戶。 如果您還沒有帳戶,請建立免費帳戶。
- Azure CLI 本地安裝(用於 Azure CLI 步驟)或存取 Azure Cloud Shell。
- Visual Studio Code,並安裝了 Docker 擴充(用於 VS Code 步驟)。
這很重要
範例 Dockerfile 使用 python:3.8-slim 作為基礎映像。
Python 3.8 於 2024 年 10 月終止支援, 不再接收安全更新。 更新你的 Dockerfile 以使用 python:3.12-slim 或 python:3.13-slim 用於生產部署。
此服務圖表會醒目提示本文所涵蓋的元件。
建立 Azure Container Registry
如果你已經有 Azure Container Registry,可以跳過這個步驟,直接進入下一步。 否則,請使用 Azure CLI 建立新的 Azure Container Registry。
你可以在
注意
使用與本教學課程系列第 2 部分相同的名稱。
使用
az acr create 指令建立 Azure 容器登錄檔。 #!/bin/bash # Use the resource group that you created in part 2 of this tutorial series. RESOURCE_GROUP_NAME='msdocs-web-app-rg' # REGISTRY_NAME must be unique within Azure and contain 5-50 alphanumeric characters. # If the name is already taken, you'll receive an error. Choose a different name and retry. REGISTRY_NAME='msdocscontainerregistryname' echo "Creating Azure Container Registry $REGISTRY_NAME..." az acr create -g $RESOURCE_GROUP_NAME -n $REGISTRY_NAME --sku Standard在命令的 JSON 輸出中,找出
loginServer值。 這個值代表完整登錄名稱(全部小寫),並包含登錄名稱。範例輸出:
{ "loginServer": "msdocscontainerregistryname.azurecr.io", "name": "msdocscontainerregistryname", ... }如果你是在本地機器上使用 Azure CLI,請執行 az acr login 指令登入容器登錄檔。
az acr login -n $REGISTRY_NAME參數
-n接受簡短登錄檔名稱(例如msdocscontainerregistryname),或完全限定登錄檔名稱(msdocscontainerregistryname.azurecr.io)。 此命令會使用您的 Azure CLI 憑證,讓 Docker 通過 Azure Container Registry 驗證。預期產出:
Login Succeeded注意
如果你用的是 Azure Cloud Shell,就不需要執行
az acr login指令,因為你的 Cloud Shell 會話會自動處理認證。
在 Azure Container Registry 中建置映像檔
您可以透過各種方法直接在 Azure 中產生容器映像:
- Azure Cloud Shell 讓你能完全在雲端建構映像檔,獨立於你的本地環境。
- 或者,你也可以用 VS Code 或 Azure CLI 從本地設定建立 Azure 映像檔,不需要本地執行 Docker。
你可以在本地開發環境中執行Azure CLI指令,方法是使用 Azure CLI 安裝 或在 Azure Cloud Shell。
在主控台裡,前往你本教學系列第二部分複製的資料庫根目錄。
使用 az acr build 指令來建立容器映像檔。
地方發展:
az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest .Azure Cloud Shell:
如果你用的是 Azure Cloud Shell,請指定 GitHub 儲存庫的 URL,而不是本地路徑(
.):# For Django sample: az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest https://github.com/Azure-Samples/msdocs-python-django-container-web-app.git # For Flask sample: az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest https://github.com/Azure-Samples/msdocs-python-flask-container-web-app.git最後一個參數(
.或 Git URL)是 Docker 建置上下文——包含 Docker 用來建置映像的 Dockerfile 與應用程式檔案的目錄。請確認容器映像是用 az acr repository list 指令建立的。
az acr repository list -n $REGISTRY_NAME預期產出:
[ "msdocspythoncontainerwebapp" ]