Python 在 Azure App Service 上 — 代码部署
将 Python(Flask、Django、FastAPI、通用)代码部署到 Azure App Service Linux(P0v3、Python 3.14)。如果资源组、App Service 计划或 Web 应用不存在,则自动创建。需要 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 应用(--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,然后重新部署。