python-appservice-deploy

python-appservice-deploy

热门

将 Python(Flask/Django/FastAPI)代码部署到 Azure App Service Linux。适用场景:"Flask App Service"、"Django App Service"、"FastAPI App Service"、"deploy Python to App Service"。不适用于:容器应用、函数应用、非 Python 项目、Terraform/Bicep/IaC、完整基础设施——请使用 azure-prepare。

1236Star
196Fork
更新于 2026/6/23
SKILL.md
只读
名称
python-appservice-deploy
描述

将 Python(Flask/Django/FastAPI)代码部署到 Azure App Service Linux。适用场景:"Flask App Service"、"Django App Service"、"FastAPI App Service"、"deploy Python to App Service"。不适用于:容器应用、函数应用、非 Python 项目、Terraform/Bicep/IaC、完整基础设施——请使用 azure-prepare。

Python on Azure App Service — 代码部署

将 Python(Flask、Django、FastAPI、通用)代码部署到 Azure App Service Linux(P0v3,Python 3.14)。如果缺少资源组、应用服务计划或 Web 应用,则自动创建。对于 VNet、Key Vault、数据库或 IaC,请转交 azure-prepare 处理。

使用的 MCP 工具mcp_azure_mcp_subscription_listmcp_azure_mcp_group_listmcp_azure_mcp_appservicemcp_azure_mcp_azd(当存在 azure.yaml 时)。

工作流程

  1. 解析上下文——智能默认值,最少提示。 仅应用名称需要交互;资源组(<app>-rg)、计划(<app>-plan)、区域(当前 az 默认值或 eastus2)、订阅均为自动推导。参见 create-app.md §1。
  2. 检测框架(建议性,绝不阻塞)。参见 detect.md
  3. 选择路径——若 azure.yaml 的 host 为 appservice,则走 deploy-azd.md;否则走 deploy-azcli.md
  4. 确保资源组 → 计划(P0v3 --is-linux)→ Web 应用(--runtime "PYTHON:3.14" 存在。遇到临时 ARM 错误时,遵循 transient-retry.md。参见 create-app.md
  5. 设置启动命令——Flask/Django:无需设置(Oryx 自动检测)。FastAPI:始终设置为 python -m uvicorn main:app --host 0.0.0.0。其他框架:发出警告。参见 startup-commands.md
  6. 设置 SCM_DO_BUILD_DURING_DEPLOYMENT=true
  7. 部署——azd deployaz webapp deploy --type zip --track-status false
  8. 停止。打印部署后消息(参见 post-deploy-message.md)并结束本轮对话。

硬性规则

  • 不进行部署后验证——部署返回后,不要运行 az webapp log tailcurlInvoke-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 已执行,重新部署。