Python sur Azure App Service — Déploiement de code
Déploie du code Python (Flask, Django, FastAPI, générique) vers Azure App Service Linux (P0v3, Python 3.14). Crée RG + Plan + Web App s'ils manquent. Transmet à azure-prepare pour VNet, Key Vault, bases de données ou IaC.
Outils MCP utilisés : mcp_azure_mcp_subscription_list, mcp_azure_mcp_group_list, mcp_azure_mcp_appservice, mcp_azure_mcp_azd (quand azure.yaml est présent).
Workflow
- Résoudre le contexte — valeurs par défaut intelligentes, invites minimales. Seul le nom de l'app est interactif ; RG (
<app>-rg), Plan (<app>-plan), région (défautazactuel oueastus2), subscription sont dérivés. create-app.md §1. - Détecter le framework (informatif, ne bloque jamais). detect.md.
- Choisir le chemin — host
azure.yaml: appservice → deploy-azd.md ; sinon deploy-azcli.md. - S'assurer que RG → Plan (
P0v3 --is-linux) → Web App (--runtime "PYTHON:3.14") existent. En cas d'erreurs ARM transitoires, suivre transient-retry.md. create-app.md. - Définir le démarrage — Flask/Django : aucun (Oryx détecte automatiquement). FastAPI : toujours
python -m uvicorn main:app --host 0.0.0.0. Autres : avertir. startup-commands.md. - Définir
SCM_DO_BUILD_DURING_DEPLOYMENT=true. - Déployer —
azd deployouaz webapp deploy --type zip --track-status false. - ARRÊTER. Imprimer le message post-déploiement (post-deploy-message.md) et terminer le tour.
Règles strictes
- ⛔ PAS DE VÉRIFICATION POST-DÉPLOIEMENT — après le retour du déploiement, ne pas exécuter
az webapp log tail,curl,Invoke-WebRequestou aucune vérification de santé. App Service a besoin de 2–3 min pour démarrer ; un log silencieux ou un 5xx précoce n'est pas un échec. - ⛔ SÉCURITÉ SHELL — pour
--runtimetoujours utiliser"PYTHON:3.14"(deux-points). Jamais"PYTHON|3.14"(la barre est un opérateur shell). - ⛔ JAMAIS
az webapp up— déprécié. Utiliser les commandes de l'étape 7. - ✅ FORMAT URL — présenter les endpoints comme des URLs
https://....
Gestion des erreurs
Voir errors.md pour la matrice complète symptôme → cause → correctif. Triage rapide : plan/app manquant → relancer l'étape 4 ; timeout ping conteneur sur 8000 → corriger le démarrage (étape 5) ; ModuleNotFoundError après déploiement → s'assurer que l'étape 6 a été exécutée, redéployer.