python-appservice-deploy
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChinesePython on Azure App Service — Code Deploy
在Azure App Service上部署Python代码
Deploys Python (Flask, Django, FastAPI, generic) code to Azure App Service Linux (P0v3, Python 3.14). Creates RG + Plan + Web App if missing. Hand off to for VNet, Key Vault, databases, or IaC.
azure-prepareMCP tools used: , , , (when is present).
mcp_azure_mcp_subscription_listmcp_azure_mcp_group_listmcp_azure_mcp_appservicemcp_azure_mcp_azdazure.yaml将Python(Flask、Django、FastAPI及通用型)代码部署至Azure App Service Linux(P0v3实例,Python 3.14版本)。若资源组(RG)、应用服务计划(Plan)、Web应用不存在则自动创建。如需处理虚拟网络(VNet)、密钥保管库(Key Vault)、数据库或基础设施即代码(IaC)相关内容,请转交工具处理。
azure-prepare使用的MCP工具:、、、(当存在文件时)。
mcp_azure_mcp_subscription_listmcp_azure_mcp_group_listmcp_azure_mcp_appservicemcp_azure_mcp_azdazure.yamlWorkflow
工作流程
- Resolve context — smart defaults, minimal prompts. Only the app name is interactive; RG (), Plan (
<app>-rg), region (current<app>-plandefault oraz), subscription are derived. create-app.md §1.eastus2 - Detect framework (advisory, never blocks). detect.md.
- Choose path — host: appservice → deploy-azd.md; else deploy-azcli.md.
azure.yaml - Ensure RG → Plan () → Web App (
P0v3 --is-linux) exist. On transient ARM errors, follow transient-retry.md. create-app.md.--runtime "PYTHON:3.14" - Set startup — Flask/Django: none (Oryx auto-detects). FastAPI: always . Other: warn. startup-commands.md.
python -m uvicorn main:app --host 0.0.0.0 - Set .
SCM_DO_BUILD_DURING_DEPLOYMENT=true - Deploy — or
azd deploy.az webapp deploy --type zip --track-status false - STOP. Print the post-deploy message (post-deploy-message.md) and end the turn.
- 解析上下文——智能默认值,最少交互提示。仅应用名称需手动输入;资源组(命名格式为)、应用服务计划(命名格式为
<app>-rg)、区域(默认使用当前<app>-plan工具的配置或az)、订阅信息均自动推导。详情见create-app.md第1节。eastus2 - 检测框架(仅提供建议,不会阻止部署)。详情见detect.md。
- 选择部署路径——若存在配置文件:采用appservice路径 → 参考deploy-azd.md;否则参考deploy-azcli.md。
azure.yaml - **确保资源组→应用服务计划()→Web应用(
P0v3 --is-linux)**已存在。若遇到ARM临时错误,请遵循transient-retry.md中的重试机制。详情见create-app.md。--runtime "PYTHON:3.14" - 设置启动命令——Flask/Django:无需设置(Oryx会自动检测)。FastAPI:必须设置为。其他框架:发出警告。详情见startup-commands.md。
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 - 停止操作。打印部署后提示信息(参考post-deploy-message.md)并结束流程。
Hard rules
硬性规则
- ⛔ NO POST-DEPLOY VERIFICATION — after deploy returns, do not run ,
az webapp log tail,curl, or any health probe. App Service needs 2–3 min to warm; a quiet log or early 5xx is not failure.Invoke-WebRequest - ⛔ SHELL SAFETY — for always use
--runtime(colon). Never"PYTHON:3.14"(pipe is a shell operator)."PYTHON|3.14" - ⛔ NEVER — deprecated. Use Step 7 commands.
az webapp up - ✅ URL FORMAT — present endpoints as URLs.
https://...
- ⛔ 禁止部署后验证——部署命令返回后,请勿运行、
az webapp log tail、curl或任何健康探测命令。App Service需要2-3分钟启动预热;静默日志或早期的5xx状态码不代表部署失败。Invoke-WebRequest - ⛔ Shell安全规范——设置参数时必须使用
--runtime(冒号分隔)。严禁使用"PYTHON:3.14"(竖线是Shell操作符)。"PYTHON|3.14" - ⛔ 禁止使用命令——该命令已被弃用。请使用步骤7中的命令。
az webapp up - ✅ URL格式规范——展示端点时需使用格式的URL。
https://...
Error Handling
错误处理
See errors.md for the full symptom → cause → fix matrix. Quick triage: missing plan/app → re-run Step 4; container ping timeout on 8000 → fix startup (Step 5); after deploy → ensure Step 6 ran, redeploy.
ModuleNotFoundError完整的症状→原因→修复矩阵请参考errors.md。快速排查指南:缺少应用服务计划/Web应用→重新执行步骤4;容器8000端口 ping超时→修复启动命令(步骤5);部署后出现→确认步骤6已执行,重新部署。
ModuleNotFoundError