Python no Azure App Service — Implantação de Código
Implanta código Python (Flask, Django, FastAPI, genérico) no Azure App Service Linux (P0v3, Python 3.14). Cria RG, Plano e Aplicativo Web se estiverem ausentes. Encaminhe para azure-prepare para VNet, Key Vault, bancos de dados ou IaC.
Ferramentas MCP utilizadas: mcp_azure_mcp_subscription_list, mcp_azure_mcp_group_list, mcp_azure_mcp_appservice, mcp_azure_mcp_azd (quando azure.yaml está presente).
Fluxo de Trabalho
- Resolver contexto — padrões inteligentes, poucos prompts. Apenas o nome do aplicativo é interativo; RG (
<app>-rg), Plano (<app>-plan), região (padrãoazatual oueastus2), assinatura são derivados. create-app.md §1. - Detectar framework (informativo, nunca bloqueia). detect.md.
- Escolher caminho — host
azure.yaml: appservice → deploy-azd.md; senão deploy-azcli.md. - Garantir que RG → Plano (
P0v3 --is-linux) → Aplicativo Web (--runtime "PYTHON:3.14") existam. Em erros ARM transitórios, siga transient-retry.md. create-app.md. - Definir inicialização — Flask/Django: nenhum (Oryx detecta automaticamente). FastAPI: sempre
python -m uvicorn main:app --host 0.0.0.0. Outros: avisar. startup-commands.md. - Definir
SCM_DO_BUILD_DURING_DEPLOYMENT=true. - Implantar —
azd deployouaz webapp deploy --type zip --track-status false. - PARAR. Exibir a mensagem pós-implantação (post-deploy-message.md) e encerrar a interação.
Regras rígidas
- ⛔ NENHUMA VERIFICAÇÃO PÓS-IMPLANTAÇÃO — após a implantação retornar, não execute
az webapp log tail,curl,Invoke-WebRequestou qualquer teste de integridade. O App Service precisa de 2–3 minutos para aquecer; um log silencioso ou 5xx inicial não é falha. - ⛔ SEGURANÇA DE SHELL — para
--runtimesempre use"PYTHON:3.14"(com dois pontos). Nunca"PYTHON|3.14"(pipe é um operador de shell). - ⛔ NUNCA USE
az webapp up— depreciado. Use os comandos do Passo 7. - ✅ FORMATO DE URL — apresente endpoints como URLs
https://....
Tratamento de Erros
Consulte errors.md para a matriz completa de sintoma → causa → correção. Triagem rápida: plano/app ausente → reexecutar Passo 4; timeout de ping no container na porta 8000 → corrigir inicialização (Passo 5); ModuleNotFoundError após implantação → garantir que o Passo 6 foi executado, reimplantar.