Créer une application web Python conteneurisée dans le cloud

Cet article fait partie d’un didacticiel sur la façon de conteneuriser et de déployer une application web Python sur Azure App Service. App Service vous permet d’exécuter des applications web conteneurisées et de déployer via des fonctionnalités d’intégration/de déploiement continu (CI/CD) avec Docker Hub, Azure Container Registry et Visual Studio Team Services. Dans cette partie du tutoriel, vous allez apprendre à générer l’application web Python conteneurisée dans le cloud.

Dans la partie facultative précédente de ce didacticiel, une image conteneur a été générée et exécutée localement. En revanche, dans cette partie du tutoriel, vous générez (conteneuriser) une application web Python dans une image Docker directement dans Azure Container Registry. La création de l’image dans Azure est généralement plus rapide et plus facile que la génération locale, puis l’envoi (push) de l’image vers un registre. En outre, la création dans le cloud ne nécessite pas que Docker s’exécute dans votre environnement de développement.

Une fois l’image Docker dans Azure Container Registry, elle peut être déployée sur Azure App Service.

Le diagramme de service présenté ci-dessous met en évidence les composants abordés dans cet article.

A screenshot of the services using in the Tutorial - Containerized Python App on Azure with the build-in-cloud path highlighted.

1. Créer un Registre de conteneurs Azure

Si vous disposez déjà d’Azure Container Registry, passez à l’étape suivante. Si ce n’est pas le cas, créez-en un.

Les commandes Azure CLI peuvent être exécutées dans Azure Cloud Shell ou sur une station de travail dans laquelle l’interface Azure CLI est installée. Lors de l’exécution dans Cloud Shell, ignorez l’étape 3.

Étape 1. Créez un groupe de ressources si nécessaire avec la commande az group create . Si vous avez déjà configuré un compte Azure Cosmos DB pour MongoDB dans la partie 2. Générez et testez localement le conteneur de ce didacticiel, définissez RESOURCE_GROUP_NAME sur le nom du groupe de ressources que vous avez utilisé pour ce compte et passez à l’étape 2.

RESOURCE_GROUP_NAME='msdocs-web-app-rg'
LOCATION='eastus'

az group create -n $RESOURCE_GROUP_NAME -l $LOCATION

LOCATION doit être une valeur d’emplacement Azure. Choisissez un emplacement près de chez vous. Vous pouvez répertorier les valeurs d’emplacement Azure avec la commande suivante : az account list-locations -o table.

Étape 2. Créez un registre de conteneurs avec la commande az acr create .

REGISTRY_NAME='<your Azure Container Registry name>'

az acr create -g $RESOURCE_GROUP_NAME -n $REGISTRY_NAME --sku Basic

REGISTRY_NAME doit être unique dans Azure et contenir 5 à 50 caractères alphanumériques.

Dans la sortie JSON de la commande, recherchez la loginServer valeur, qui est le nom de Registre complet (toutes les minuscules) et qui doit inclure le nom du registre que vous avez spécifié.

Étape 3. Si vous exécutez Azure CLI localement, connectez-vous au Registre à l’aide de la commande az acr login .

az acr login -n $REGISTRY_NAME

La commande ajoute « azurecr.io » au nom pour créer le nom de Registre complet. Si elle réussit, le message « Connexion réussie » s’affiche.

Remarque

La az acr login commande n’est pas nécessaire ou prise en charge dans Cloud Shell.

2. Générer une image dans Azure Container Registry

Vous pouvez générer l’image conteneur directement dans Azure de plusieurs façons. Tout d’abord, vous pouvez utiliser Azure Cloud Shell, qui génère l’image sans utiliser votre environnement local. Vous pouvez également générer l’image conteneur dans Azure à partir de votre environnement local à l’aide de VS Code ou d’Azure CLI. La création de l’image dans le cloud ne nécessite pas que Docker s’exécute dans votre environnement local. Si vous en avez besoin, vous pouvez suivre les instructions dans Cloner ou télécharger l’exemple d’application dans la partie 2 de ce tutoriel pour obtenir l’exemple d’application web Flask ou Django.

Les commandes Azure CLI peuvent être exécutées sur une station de travail avec Azure CLI installée ou dans Azure Cloud Shell. Lors de l’exécution dans Cloud Shell, ignorez l’étape 1.

Étape 1. Si vous exécutez Azure CLI localement, connectez-vous au Registre si vous ne l’avez pas déjà fait avec la commande az acr login .

az acr login -n $REGISTRY_NAME

Si vous accédez au Registre à partir d’un abonnement différent de celui dans lequel le Registre a été créé, utilisez le --suffix commutateur.

Remarque

La az acr login commande n’est pas nécessaire ou prise en charge dans Cloud Shell.

Étape 2. Générez l’image avec la commande az acr build .

az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest .

Dans cette commande :

  • Le point (« . ») à la fin de la commande indique l’emplacement du code source à générer. Si vous n’exécutez pas cette commande dans l’exemple de répertoire racine de l’application, spécifiez le chemin d’accès au code.

    Au lieu d’un chemin d’accès au code dans votre environnement, vous pouvez éventuellement spécifier un chemin d’accès à l’exemple de dépôt GitHub : https://github.com/Azure-Samples/msdocs-python-django-container-web-app ou https://github.com/Azure-Samples/msdocs-python-flask-container-web-app.

  • Si vous ne laissez pas l’option -t (identique à --image) , la commande met en file d’attente une build de contexte local sans l’envoyer au Registre. La création sans envoi (push) peut être utile pour case activée que l’image génère.

Étape 3. Vérifiez que l’image conteneur a été créée avec la commande az acr repository list .

az acr repository list -n $REGISTRY_NAME

Étape suivante