Python 在 Azure App Service 上 — 程式碼部署
將 Python(Flask、Django、FastAPI、通用)程式碼部署到 Azure App Service Linux(P0v3、Python 3.14)。若資源群組、方案或 Web App 不存在則自動建立。將 VNet、Key Vault、資料庫或 IaC 相關任務交給 azure-prepare。
使用的 MCP 工具:mcp_azure_mcp_subscription_list、mcp_azure_mcp_group_list、mcp_azure_mcp_appservice、mcp_azure_mcp_azd(當存在 azure.yaml 時)。
工作流程
- 解析上下文 — 智慧預設值,最少提問。 只有應用程式名稱需要互動輸入;資源群組(
<app>-rg)、方案(<app>-plan)、區域(目前的az預設值或eastus2)、訂用帳戶都會自動推導。請參閱 create-app.md §1。 - 偵測框架(建議性質,絕不阻擋)。請參閱 detect.md。
- 選擇路徑 —
azure.yaml中 host 為 appservice → 前往 deploy-azd.md;否則前往 deploy-azcli.md。 - 確保資源群組 → 方案(
P0v3 --is-linux)→ Web App(--runtime "PYTHON:3.14") 存在。若發生暫時性 ARM 錯誤,請遵循 transient-retry.md。請參閱 create-app.md。 - 設定啟動命令 — Flask/Django:無需設定(Oryx 自動偵測)。FastAPI:一律使用
python -m uvicorn main:app --host 0.0.0.0。其他框架:發出警告。請參閱 startup-commands.md。 - 設定
SCM_DO_BUILD_DURING_DEPLOYMENT=true。 - 部署 — 使用
azd deploy或az webapp deploy --type zip --track-status false。 - 停止。輸出部署後訊息(請參閱 post-deploy-message.md)並結束此回合。
嚴格規則
- ⛔ 禁止部署後驗證 — 部署指令返回後,請勿執行
az webapp log tail、curl、Invoke-WebRequest或任何健康狀態檢查。App Service 需要 2–3 分鐘暖機;安靜的日誌或早期的 5xx 不代表失敗。 - ⛔ Shell 安全 —
--runtime請務必使用"PYTHON:3.14"(冒號)。切勿使用"PYTHON|3.14"(管線符號是 Shell 運算子)。 - ⛔ 絕不使用
az webapp up— 已棄用。請使用步驟 7 中的指令。 - ✅ URL 格式 — 端點一律以
https://...URL 呈現。
錯誤處理
請參閱 errors.md 以取得完整的症狀 → 原因 → 解決方案對應表。快速診斷:缺少方案或應用程式 → 重新執行步驟 4;8000 連接埠的容器 ping 逾時 → 修正啟動命令(步驟 5);部署後出現 ModuleNotFoundError → 確保步驟 6 已執行,然後重新部署。