Skill · em Publicar e operar
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.
Procedência
- Origem: microsoft/azure-skills
- Caminho:
skills/python-appservice-deploy - Versão fixada:
117b038edfef5d7af09848b8ffcd355f28f19956 - Licença: MIT
- Espelhado em 25/09/2026
- 202,9 mil instalações no skills.sh (lido em 25/09/2026)
Antes de instalar
13 arquivos · 41,7 KB · inclui 4 scripts que executam: scripts/generate-app-name.ps1, scripts/generate-app-name.sh, scripts/retry-az-create.ps1, scripts/retry-az-create.sh
Instalar na sua CLI
O comando baixa a versão fixada (commit 117b038) direto da origem, para a pasta que a CLI lê. Precisa de curl (macOS e Linux); no Windows não há comando, porque o Rook Labs é para macOS.
Claude Code
Neste projeto: instala em .claude/skills/python-appservice-deploy/.
d=".claude/skills/python-appservice-deploy" u="https://raw.githubusercontent.com/microsoft/azure-skills/117b038edfef5d7af09848b8ffcd355f28f19956/skills/python-appservice-deploy" curl -fsSL --create-dirs \ -o "$d/SKILL.md" "$u/SKILL.md" \ -o "$d/references/create-app.md" "$u/references/create-app.md" \ -o "$d/references/deploy-azcli.md" "$u/references/deploy-azcli.md" \ -o "$d/references/deploy-azd.md" "$u/references/deploy-azd.md" \ -o "$d/references/detect.md" "$u/references/detect.md" \ -o "$d/references/errors.md" "$u/references/errors.md" \ -o "$d/references/post-deploy-message.md" "$u/references/post-deploy-message.md" \ -o "$d/references/startup-commands.md" "$u/references/startup-commands.md" \ -o "$d/references/transient-retry.md" "$u/references/transient-retry.md" \ -o "$d/scripts/generate-app-name.ps1" "$u/scripts/generate-app-name.ps1" \ -o "$d/scripts/generate-app-name.sh" "$u/scripts/generate-app-name.sh" \ -o "$d/scripts/retry-az-create.ps1" "$u/scripts/retry-az-create.ps1" \ -o "$d/scripts/retry-az-create.sh" "$u/scripts/retry-az-create.sh"
Global: instala em ~/.claude/skills/python-appservice-deploy/.
d="$HOME/.claude/skills/python-appservice-deploy" u="https://raw.githubusercontent.com/microsoft/azure-skills/117b038edfef5d7af09848b8ffcd355f28f19956/skills/python-appservice-deploy" curl -fsSL --create-dirs \ -o "$d/SKILL.md" "$u/SKILL.md" \ -o "$d/references/create-app.md" "$u/references/create-app.md" \ -o "$d/references/deploy-azcli.md" "$u/references/deploy-azcli.md" \ -o "$d/references/deploy-azd.md" "$u/references/deploy-azd.md" \ -o "$d/references/detect.md" "$u/references/detect.md" \ -o "$d/references/errors.md" "$u/references/errors.md" \ -o "$d/references/post-deploy-message.md" "$u/references/post-deploy-message.md" \ -o "$d/references/startup-commands.md" "$u/references/startup-commands.md" \ -o "$d/references/transient-retry.md" "$u/references/transient-retry.md" \ -o "$d/scripts/generate-app-name.ps1" "$u/scripts/generate-app-name.ps1" \ -o "$d/scripts/generate-app-name.sh" "$u/scripts/generate-app-name.sh" \ -o "$d/scripts/retry-az-create.ps1" "$u/scripts/retry-az-create.ps1" \ -o "$d/scripts/retry-az-create.sh" "$u/scripts/retry-az-create.sh"
Codex
Neste projeto: instala em .agents/skills/python-appservice-deploy/.
d=".agents/skills/python-appservice-deploy" u="https://raw.githubusercontent.com/microsoft/azure-skills/117b038edfef5d7af09848b8ffcd355f28f19956/skills/python-appservice-deploy" curl -fsSL --create-dirs \ -o "$d/SKILL.md" "$u/SKILL.md" \ -o "$d/references/create-app.md" "$u/references/create-app.md" \ -o "$d/references/deploy-azcli.md" "$u/references/deploy-azcli.md" \ -o "$d/references/deploy-azd.md" "$u/references/deploy-azd.md" \ -o "$d/references/detect.md" "$u/references/detect.md" \ -o "$d/references/errors.md" "$u/references/errors.md" \ -o "$d/references/post-deploy-message.md" "$u/references/post-deploy-message.md" \ -o "$d/references/startup-commands.md" "$u/references/startup-commands.md" \ -o "$d/references/transient-retry.md" "$u/references/transient-retry.md" \ -o "$d/scripts/generate-app-name.ps1" "$u/scripts/generate-app-name.ps1" \ -o "$d/scripts/generate-app-name.sh" "$u/scripts/generate-app-name.sh" \ -o "$d/scripts/retry-az-create.ps1" "$u/scripts/retry-az-create.ps1" \ -o "$d/scripts/retry-az-create.sh" "$u/scripts/retry-az-create.sh"
Global: instala em ~/.agents/skills/python-appservice-deploy/.
d="$HOME/.agents/skills/python-appservice-deploy" u="https://raw.githubusercontent.com/microsoft/azure-skills/117b038edfef5d7af09848b8ffcd355f28f19956/skills/python-appservice-deploy" curl -fsSL --create-dirs \ -o "$d/SKILL.md" "$u/SKILL.md" \ -o "$d/references/create-app.md" "$u/references/create-app.md" \ -o "$d/references/deploy-azcli.md" "$u/references/deploy-azcli.md" \ -o "$d/references/deploy-azd.md" "$u/references/deploy-azd.md" \ -o "$d/references/detect.md" "$u/references/detect.md" \ -o "$d/references/errors.md" "$u/references/errors.md" \ -o "$d/references/post-deploy-message.md" "$u/references/post-deploy-message.md" \ -o "$d/references/startup-commands.md" "$u/references/startup-commands.md" \ -o "$d/references/transient-retry.md" "$u/references/transient-retry.md" \ -o "$d/scripts/generate-app-name.ps1" "$u/scripts/generate-app-name.ps1" \ -o "$d/scripts/generate-app-name.sh" "$u/scripts/generate-app-name.sh" \ -o "$d/scripts/retry-az-create.ps1" "$u/scripts/retry-az-create.ps1" \ -o "$d/scripts/retry-az-create.sh" "$u/scripts/retry-az-create.sh"
Antigravity
Neste projeto: instala em .agents/skills/python-appservice-deploy/.
d=".agents/skills/python-appservice-deploy" u="https://raw.githubusercontent.com/microsoft/azure-skills/117b038edfef5d7af09848b8ffcd355f28f19956/skills/python-appservice-deploy" curl -fsSL --create-dirs \ -o "$d/SKILL.md" "$u/SKILL.md" \ -o "$d/references/create-app.md" "$u/references/create-app.md" \ -o "$d/references/deploy-azcli.md" "$u/references/deploy-azcli.md" \ -o "$d/references/deploy-azd.md" "$u/references/deploy-azd.md" \ -o "$d/references/detect.md" "$u/references/detect.md" \ -o "$d/references/errors.md" "$u/references/errors.md" \ -o "$d/references/post-deploy-message.md" "$u/references/post-deploy-message.md" \ -o "$d/references/startup-commands.md" "$u/references/startup-commands.md" \ -o "$d/references/transient-retry.md" "$u/references/transient-retry.md" \ -o "$d/scripts/generate-app-name.ps1" "$u/scripts/generate-app-name.ps1" \ -o "$d/scripts/generate-app-name.sh" "$u/scripts/generate-app-name.sh" \ -o "$d/scripts/retry-az-create.ps1" "$u/scripts/retry-az-create.ps1" \ -o "$d/scripts/retry-az-create.sh" "$u/scripts/retry-az-create.sh"
Global: instala em ~/.gemini/antigravity-cli/skills/python-appservice-deploy/.
d="$HOME/.gemini/antigravity-cli/skills/python-appservice-deploy" u="https://raw.githubusercontent.com/microsoft/azure-skills/117b038edfef5d7af09848b8ffcd355f28f19956/skills/python-appservice-deploy" curl -fsSL --create-dirs \ -o "$d/SKILL.md" "$u/SKILL.md" \ -o "$d/references/create-app.md" "$u/references/create-app.md" \ -o "$d/references/deploy-azcli.md" "$u/references/deploy-azcli.md" \ -o "$d/references/deploy-azd.md" "$u/references/deploy-azd.md" \ -o "$d/references/detect.md" "$u/references/detect.md" \ -o "$d/references/errors.md" "$u/references/errors.md" \ -o "$d/references/post-deploy-message.md" "$u/references/post-deploy-message.md" \ -o "$d/references/startup-commands.md" "$u/references/startup-commands.md" \ -o "$d/references/transient-retry.md" "$u/references/transient-retry.md" \ -o "$d/scripts/generate-app-name.ps1" "$u/scripts/generate-app-name.ps1" \ -o "$d/scripts/generate-app-name.sh" "$u/scripts/generate-app-name.sh" \ -o "$d/scripts/retry-az-create.ps1" "$u/scripts/retry-az-create.ps1" \ -o "$d/scripts/retry-az-create.sh" "$u/scripts/retry-az-create.sh"
Peça ao Rook
Já usa o Rook Labs? Cole no chat do Rook: instale a skill https://rooklabs.sh/marketplace/microsoft.azure-skills.python-appservice-deploy
Prévia do SKILL.md
---
name: python-appservice-deploy
description: "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."
license: MIT
metadata:
author: Microsoft
version: "1.1.1"
---
# 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
…