运维部署
用 Azure App Service Linux 部署…
当需要把 Python(Flask/Django/FastAPI)代码部署到 Azure App Service Linux 时,按此流程创建资源、配置启动命令并部署,且部署后不做验证。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
用 Azure App Service 特定
解决思路
- 解析上下文时使用智能默认值、尽量减少交互提示:只有应用名需要交互输入;资源组(`<app>-rg`)、计划(`<app>-plan`)、区域(当前 `az` 默认或 `eastus2`)、订阅都自动推导。
- 检测框架(仅作参考,绝不阻塞流程)。
- 选择部署路径:若 `azure.yaml` 的 host 为 appservice,则走 azd 部署路径;否则走 azcli 部署路径。
- 确保资源组 → 计划(`P0v3 --is-linux`)→ Web App(`--runtime "PYTHON:3.14"`)存在;遇到 ARM 瞬时错误时按瞬时重试策略处理。
- 设置启动命令:Flask/Django 不设置(Oryx 会自动检测);FastAPI 始终设置为 `python -m uvicorn main:app --host 0.0.0.0`;其他情况给出警告。
- 设置 `SCM_DO_BUILD_DURING_DEPLOYMENT=true`。
- 执行部署:使用 `azd deploy` 或 `az webapp deploy --type zip --track-status false`。
- 停止:打印部署后消息并结束本轮,不要继续操作。
- 硬性规则:部署返回后不要做任何部署后验证——不要运行 `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 形式呈现。
- 错误处理:按症状 → 原因 → 修复矩阵排查;快速分诊:缺少计划/应用 → 重新执行第 4 步;8000 端口容器 ping 超时 → 修复启动命令(第 5 步);部署后出现 `ModuleNotFoundError` → 确保第 6 步已执行并重新部署。
适用边界 · 注意事项
- 不要用于 Container Apps、Functions、非 Python 场景。
- 不要用于 Terraform/Bicep/IaC 或完整基础设施搭建——应改用 `azure-prepare`。
- 不要在部署返回后立即做日志/健康探测验证,因为 App Service 需要 2–3 分钟预热。