python-appservice-deploy

Deploy Python (Flask/Django/FastAPI) code to Azure App Service Linux. WHEN: "Flask App Service", "Django App Service", "FastAPI App Service", "deploy Python to App Service". DO NOT USE FOR: Container Apps, Functions, non-Python, Terraform/Bicep/IaC, full infra — use azure-prepare.

By microsoft · 180,264 installs

npx skills add microsoft/azure-skills --skill python-appservice-deploy

Source repository · Upstream listing

Python on Azure App Service — Code Deploy 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 azure prepare for VNet, Key Vault, databases, or IaC. MCP tools used : mcp azure mcp subscription list , mcp azure mcp group list , mcp azure mcp appservice , mcp azure mcp azd (when azure.yaml is present). Workflow 1. Resolve context — smart defaults, minimal prompts. Only the app name is interactive; RG ( <app rg ), Plan ( <app plan ), region (current az default or eastus2 ), subscription are derived. [create app.md](references/create app.md) §1. 2. Detect framework (advisory, never blocks). [detect.md](references/detect.md). 3. Choose path — azure.yaml host: appservice → [deploy azd.md](references/deploy azd.md); else [deploy azcli.md](references/deploy azcli.md). 4. Ensure RG → Plan ( P0v3 is linux ) → Web App ( runtime "PYTHON:3.14" ) exist. On transient ARM errors, follow [transient retry.md](references/transient retry.md). [create app.md](references/create app.md). 5. Set startup — Flask/Django: none (Oryx auto detects). FastAPI: always python m uvicorn main:app host 0.0.0.0 . Other: warn. [startup commands.md](references/startup commands.md). 6. Set SCM DO BUILD DURING DEPLOYMENT=true . 7. Deploy — azd deploy or az webapp deploy type zip track status false . 8. STOP. Print the post deploy message ([post deploy message.md](references/post deploy message.md)) and end the turn. Hard rules ⛔ NO POST DEPLOY VERIFICATION — after deploy returns, do not run az webapp log tail , curl , Invoke WebRequest , or any health probe. App Service needs 2–3 min to warm; a quiet log or early 5xx is not failure. ⛔ SHELL SAFETY — for runtime always use "PYTHON:3.14" (colon). Never "PYTHON 3.14" (pipe is a shell operator). ⛔ NEVER az webapp up — deprecated. Use Step 7 commands. ✅ URL FORMAT — present endpoints as https://... URLs. Error Handling See [errors.md](references/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); ModuleNotFoundError after deploy → ensure Step 6 ran, redeploy.