Déployer une application FastAPI sur Azure Web App avec Azure CLI, Docker et GitHub Actions
Tutoriel complet pour déployer une application FastAPI sur Azure Web app en utilisant Docker, Azure Container Registry et un pipeline CI/CD GitHub Actions.
Dans ce tutoriel, nous allons déployer une application FastAPI sur Microsoft Azure en utilisant Docker pour la containerisation, Azure Container Registry (ACR) pour stocker l’image, et Azure Web App pour l’hébergement.
Le déploiement sera automatisé grâce à GitHub Actions pour mettre en place un pipeline CI/CD complet.
Prérequis
Avant de commencer, vous devez avoir :
- Un compte Azure actif
- Docker installé sur votre machine
- Azure CLI pour interagir avec Azure
- Un compte GitHub avec Actions activées
1. Créer les ressources Azure via Azure CLI
🔹 1.1 Créer un groupe de ressources
az login
az group create --name myResourceGroup --location francecentral
🔹 1.2 Créer un Azure Container Registry (ACR)
az acr create --resource-group myResourceGroup --name weatherapplucasz --sku Basic
Pour en savoir plus : Documentation officielle ACR
🔹 1.3 Créer une Azure Web App
az appservice plan create --name myAppServicePlan \
--resource-group myResourceGroup --sku B1 --is-linux
az webapp create --name weatherapp \
--resource-group myResourceGroup \
--plan myAppServicePlan \
--deployment-container-image-name weatherapplucasz.azurecr.io/weatherapp:latest
2. Configurer Azure Web App pour pointer vers l'image du container
- Connectez-vous au Portail Azure
- Ouvrez App Services et sélectionnez
weatherapp
- Accédez à Configuration → Container settings
- Sélectionnez votre ACR (
weatherapplucasz.azurecr.io
) - Choisissez l’image
weatherapp:latest
3. Créer les identifiants Azure pour GitHub Actions
az ad sp create-for-rbac --name "github-action-deploy" \
--role contributor \
--scopes /subscriptions/<subscription-id>/resourceGroups/myResourceGroup \
--sdk-auth
Référence : Créer un principal de service Azure
4. Ajouter les identifiants dans les secrets GitHub
- Ouvrez Settings → Secrets and variables → Actions
- Cliquez sur New repository secret
- Nom :
AZURE_CREDENTIALS
- Valeur : collez le JSON généré
5. Pipeline CI/CD avec GitHub Actions
Créez le fichier .github/workflows/deploy.yml
:
name: CI/CD Pipeline for FastAPI App
on:
push:
branches:
- main
jobs:
build_and_push:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Log in to Azure CLI
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Log in to ACR
run: az acr login --name weatherapplucasz
- name: Build Docker image
run: docker build -t weatherapplucasz.azurecr.io/weatherapp:latest .
- name: Push Docker image to ACR
run: docker push weatherapplucasz.azurecr.io/weatherapp:latest
- name: Deploy to Azure Web App
uses: azure/webapps-deploy@v2
with:
app-name: weatherapp
images: weatherapplucasz.azurecr.io/weatherapp:latest
Guide complet GitHub Actions + Azure : Documentation Microsoft
Explication du pipeline
- Checkout : Récupère le code source depuis GitHub
- Docker Buildx : Prépare la construction d’images multi-architecture
- Azure Login : Authentifie le pipeline sur Azure
- ACR Login : Se connecte au registre pour push/pull
- Docker Build : Construit l’image de l’application FastAPI
- Docker Push : Envoie l’image dans ACR
- Deploy : Met à jour Azure Web App avec la dernière image
Conclusion
Grâce à ce tutoriel, vous pouvez :
-
Containeriser votre app FastAPI avec Docker
-
La stocker dans Azure Container Registry
-
La déployer sur Azure Web App
-
Automatiser le tout avec GitHub Actions
Pour aller plus loin :
-
Azure Key Vault pour sécuriser vos secrets
-
Application Insights pour surveiller vos performances
Questions fréquentes
Autres articles

Azure Key Vault : sécuriser vos secrets dans le cloud
Comprendre, évaluer et intégrer Azure Key Vault pour protéger secrets, clés et certificats. Cas d’us...

Modélisation des données : définitions, types, exemples et bonnes pratiques (2025)
Découvrez la modélisation des données : définitions, types, modèles relationnel et NoSQL, bonnes pra...