THE MEDIA FOR AI THAT ACTUALLY HELPS.French edition · Understand & take action
The interface is in English. Use cases, skills and articles remain in French.
Microsoft

Déployer une application Python sur Azure App Service Linux

python-appservice-deploy

En bref

Cette skill documente le déploiement de code Python (Flask, Django, FastAPI, ou générique) vers Azure App Service Linux. Elle permet de créer au besoin le groupe de ressources, un plan `P0v3` Linux et une Web App au runtime `PYTHON:3.14`, régler la commande de démarrage (pour FastAPI : toujours `python -m uvicorn main:app --host 0.0.0.0`), poser `SCM_DO_BUILD_DURING_DEPLOYMENT=true`, puis déployer par `azd deploy` ou `az webapp deploy`. Ce n’est pas pour Container Apps, Functions, un langage autre que Python, ni pour Terraform, Bicep ou une infrastructure complète : on passe par `azure-prepare`. Avant de créer un plan, on invoque `azure-quotas`. On n’utilise jamais `az webapp up` (déprécié), ni le runtime avec une barre verticale à la place du deux-points. Après le déploiement, on n’enchaîne ni `curl`, ni `az webapp log tail`, ni une sonde de santé : l’application a besoin de deux à trois minutes pour chauffer. Pour Django, `STATIC_ROOT` et `collectstatic` doivent être en ordre avant d’empaqueter.

Ce que ça fait

  • Créer au besoin le groupe de ressources, un plan `P0v3` Linux et une Web App au runtime `PYTHON:3.14`, régler la commande de démarrage (pour FastAPI : toujours `python -m uvicorn main:app --host 0.0.0.0`), poser `SCM_DO_BUILD_DURING_DEPLOYMENT=true`, puis déployer par `azd deploy` ou `az webapp deploy`.
  • Ce n’est pas pour Container Apps, Functions, un langage autre que Python, ni pour Terraform, Bicep ou une infrastructure complète : on passe par `azure-prepare`.
  • Avant de créer un plan, on invoque `azure-quotas`.
  • On n’utilise jamais `az webapp up` (déprécié), ni le runtime avec une barre verticale à la place du deux-points.
  • Après le déploiement, on n’enchaîne ni `curl`, ni `az webapp log tail`, ni une sonde de santé : l’application a besoin de deux à trois minutes pour chauffer.
  • Des skills voisines citées sont `azure-prepare`, `azure-quotas`.

Pour qui, et un exemple

Les développeurs Python qui veulent déployer une appli Flask, Django ou FastAPI sur App Service Linux, sans IaC complète et sans Container Apps ni Functions.

Exemple de demande : « Déploie cette appli FastAPI sur App Service Linux, runtime PYTHON:3.14, avec uvicorn en démarrage, et arrête-toi après le déploiement, sans curl ni lecture de logs. »

On l’ouvre pour déployer du Python sur App Service Linux (Flask, Django, FastAPI), pas pour Container Apps, Functions, un autre langage, ou une infrastructure en Bicep ou Terraform. Exemple rédigé par iadujour.fr à partir du SKILL.md, non testé.

Installer

npx skills add microsoft/skills (sélection de la skill dans l’assistant, README).

npx skills add microsoft/skills

Fonctionne avec

  • GitHub Copilot
  • Copilot CLI

Source : README : exemples de « Copilot CLI » et « GitHub Copilot in VS Code » ; l’installation `npx skills add` envoie les fichiers vers le répertoire de l’agent choisi, sans liste exhaustive.

Niveau : Intermédiaire

Suppose un projet déjà en place chez l’éditeur et les outils décrits dans le SKILL.md.

À savoir

Dépôt officiel Microsoft ; le README le présente comme un travail en cours (skills et tests encore enrichis).

Extrait du SKILL.md

La description d’origine, celle que l’agent lit pour décider de charger la skill (en anglais) :

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.

Citée depuis le SKILL.md au commit 5211c2d . Le dossier contient aussi 12 fichiers annexes (references/, scripts/).

Le SKILL.md compte 31 lignes et 3 sections principales :

  • Workflow
  • Hard rules
  • Error Handling

Licence : MIT

Vérifiée le 10 novembre 2026 sur : fichier de licence d’un dossier parent (.github/plugins/azure-skills/LICENSE) . Licence déclarée dans le frontmatter : « MIT ». Titulaire : Copyright 2025 (c) Microsoft Corporation..

La licence autorise la reprise : le texte intégral du SKILL.md est reproduit ci-dessous, sans modification, avec sa mention de licence.

Texte intégral du SKILL.md

Reproduit sans modification depuis microsoft/skills (commit 5211c2d) , © Microsoft, sous licence MIT (fichier de licence d’origine ).

Afficher le SKILL.md original (31 lignes, en anglais)
---
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.2"
---

# 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

**Prerequisite:** Verify the latest stable Azure CLI; update with approval and recheck if needed.

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. Before creating a plan, invoke `azure-quotas` to check quota availability. 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 --enriched-errors true`.
8. **STOP. Print the post-deploy message** ([post-deploy-message.md](references/post-deploy-message.md)) and end the turn.

### Hard rules

- **LINUX SCRIPTS** — normalize selected shell/startup files to LF, then verify no CR bytes remain. Stop on normalization, validation or packaging failure; deploy only a fresh package.
- **DJANGO REMOTE BUILDS** — require `STATIC_ROOT` and successful system/`collectstatic` checks before packaging.
- ⛔ **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.
Source. Fiche rédigée par iadujour.fr à partir de : Frontmatter, sections et corps du SKILL.md, README du dépôt. Consultée le 10 novembre 2026. Dépôt : microsoft/skills .
MÊME ÉDITEUR

Autres skills Microsoft : DevOps et déploiement

Toute la catégorie
MicrosoftDevOps et déploiement

Gérer images, artefacts et dépôts dans Azure Container Registry en Python

azure-containerregistry-py

Le SDK Azure Container Registry pour Python gère les images de conteneurs, les artefacts et les dépôts d’un registre ACR, principalement via ContainerRegistryClient : lister les dépôts, mener des opérations sur un dépôt, lister les étiquettes (souvent les plus récentes d’abord).

Outils : GitHub Copilot, Copilot CLINiveau : Intermédiairemàj 15/07/2026
ÉCHANGES

Commentaires.

Un retour d’expérience, une question, une précision sur cette skill ? Les commentaires sont relus avant publication.

Commentaires publiés

Chargement des commentaires…

    Laisser un commentaire

    Charte de modération. Chaque commentaire est relu avant publication. Sont refusés : l’incitation à la haine, les propos injurieux ou discriminatoires, la publicité, le spam et les liens promotionnels, le hors-sujet et les données personnelles d’autrui.