python-appservice-deploy

Par microsoft · azure-skills

Déployer du code Python (Flask/Django/FastAPI) sur Azure App Service Linux. QUAND : « Flask App Service », « Django App Service », « FastAPI App Service », « deploy Python to App Service ». NE PAS UTILISER POUR : Container Apps, Functions, non-Python, Terraform/Bicep/IaC, infrastructure complète — utiliser azure-prepare.

npx skills add https://github.com/microsoft/azure-skills --skill python-appservice-deploy

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

  1. 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éfaut az actuel ou eastus2), subscription sont dérivés. create-app.md §1.
  2. Détecter le framework (informatif, ne bloque jamais). detect.md.
  3. Choisir le chemin — host azure.yaml : appservice → deploy-azd.md ; sinon deploy-azcli.md.
  4. 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.
  5. 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.
  6. Définir SCM_DO_BUILD_DURING_DEPLOYMENT=true.
  7. Déployerazd deploy ou az webapp deploy --type zip --track-status false.
  8. 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-WebRequest ou 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 --runtime toujours 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.

Skills similaires