Partager via


Déployer une application web Flask ou FastAPI sur Azure Container Apps

Ce tutoriel vous montre comment conteneuriser une application web Python Flask ou FastAPI et la déployer sur Azure Container Apps. Azure Container Apps utilise Docker technologie conteneur pour héberger des images intégrées et des images personnalisées. Pour plus d’informations sur l’utilisation de conteneurs dans Azure, consultez Comparer les options de conteneurs Azure.

Dans ce tutoriel, vous utilisez l’interface CLI Docker et le Azure CLI pour créer une image Docker et la déployer sur Azure Container Apps. Vous pouvez également effectuer un déploiement à l’aide de Visual Studio Code et de l’extension Azure Tools.

Conditions préalables

Pour suivre ce didacticiel, vous avez besoin des éléments suivants :

Obtenir l’exemple de code

Dans votre environnement local, obtenez le code.

git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart.git

Ajouter des fichiers Dockerfile et .dockerignore

Ajoutez un fichier Dockerfile pour indiquer à Docker comment générer l’image. Le Dockerfile spécifie l’utilisation de Gunicorn, un serveur web de niveau production qui transmet les requêtes web aux frameworks Flask et FastAPI. Les commandes ENTRYPOINT et CMD demandent à Gunicorn de gérer les requêtes pour l’objet d’application.

# syntax=docker/dockerfile:1

FROM python:3.11

WORKDIR /code

COPY requirements.txt .

RUN pip3 install -r requirements.txt

COPY . .

EXPOSE 50505

ENTRYPOINT ["gunicorn", "--config", "gunicorn.conf.py", "app:app"]

Cet exemple utilise 50505 pour le port de conteneur (interne), mais vous pouvez utiliser n’importe quel port gratuit.

Vérifiez le fichier requirements.txt pour vous assurer qu’il contient gunicorn.

Flask==3.1.0
gunicorn

Configurer gunicorn

Vous pouvez configurer Gunicorn à l’aide d’un fichier gunicorn.conf.py . Lorsque le fichier gunicorn.conf.py se trouve dans le même répertoire que celui que vous exécutezgunicorn, vous n’avez pas besoin de spécifier son emplacement dans l’instruction ou ENTRYPOINT le CMDfichier Dockerfile. Pour en savoir plus sur la spécification du fichier de configuration, consultez les paramètres Gunicorn.

Dans ce tutoriel, le fichier de configuration suggéré configure Gunicorn pour augmenter son nombre de workers en fonction du nombre de cœurs de processeur disponibles. Pour en savoir plus sur les paramètres du fichier gunicorn.conf.py, consultez la configuration de Gunicorn.

# Gunicorn configuration file
import multiprocessing

max_requests = 1000
max_requests_jitter = 50

log_file = "-"

bind = "0.0.0.0:50505"

workers = (multiprocessing.cpu_count() * 2) + 1
threads = workers

timeout = 120

Ajoutez un fichier .dockerignore pour exclure les fichiers inutiles de l’image.

.git*
**/*.pyc
.venv/

Générer et exécuter l’image localement

Générer l’image localement.

docker build --tag flask-demo .

Exécutez l’image localement dans un conteneur Docker.

docker run --detach --publish 5000:50505 flask-demo

Ouvrez http://localhost:5000 dans votre navigateur pour voir l’application web s’exécutant localement.

L’option --detach exécute le conteneur en arrière-plan. L'option --publish associe le port du conteneur à un port sur l'hôte. Le port de l’hôte (externe) est le premier de la paire, et le port du conteneur (interne) est le second. Pour plus d’informations, consultez Informations de référence sur l’exécution de Docker.

Déployer une application web sur Azure

Pour déployer l’image Docker sur Azure Container Apps, utilisez la commande az containerapp up. (Les commandes suivantes sont affichées pour l’interpréteur de commandes Bash. Modifiez le caractère de continuation (\) le cas échéant pour d’autres interpréteurs de commandes.)

az containerapp up \
  --resource-group web-flask-aca-rg --name web-aca-app \
  --ingress external --target-port 50505 --source .

Une fois le déploiement terminé, vous disposez d’un groupe de ressources avec les ressources suivantes à l’intérieur de celui-ci :

  • Un registre de conteneurs Azure
  • Un environnement Container Apps
  • Application conteneur exécutant l’image de l’application web
  • Un espace de travail Log Analytics

La sortie de la az containerapp up commande inclut l’URL de l’application déployée. Ouvrez l’URL dans votre navigateur pour voir l’application web s’exécutant dans Azure. L'URL ressemble à ce qui suit https://web-aca-app.<generated-text>.<location-info>.azurecontainerapps.io, où <generated-text> et <location-info> sont uniques à votre déploiement.

Mettre à jour et redéployer

Après avoir mis à jour le code, réexécutez la commande précédente az containerapp up . La commande régénère l’image et la redéploie sur Azure Container Apps. Lorsque vous réexécutez la commande, elle détecte que le groupe de ressources et l’application existent déjà, et met à jour uniquement l’application conteneur.

Dans des scénarios de mise à jour plus complexes, vous pouvez redéployer à l’aide des commandes az acr build et az containerapp update pour mettre à jour l’application conteneur.

Nettoyage

Toutes les ressources Azure que vous avez créées dans ce didacticiel se trouvent dans le même groupe de ressources. La suppression du groupe de ressources supprime toutes les ressources du groupe de ressources. Il s'agit du moyen le plus rapide de supprimer toutes les ressources Azure utilisées pour votre application.

Pour supprimer des ressources, utilisez la commande az group delete.

az group delete --name web-flask-aca-rg

Vous pouvez également supprimer le groupe dans le portail Azure ou dans Visual Studio Code à l’aide de l’extension Azure Tools.

Étapes suivantes

Pour plus d’informations, consultez les ressources suivantes :