Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans cet article, vous allez apprendre à déployer un service Worker .NET sur Azure. Avec votre Worker exécuté en tant qu'une instance de conteneur Azure (ACI) depuis Azure Container Registry (ACR), il peut agir en tant que microservice dans le cloud. Il existe de nombreux cas d’usage pour les services de longue durée et le service Worker existe pour cette raison.
Dans ce tutoriel, vous allez apprendre à :
- Créez un service de travail.
- Créez une ressource de registre de conteneurs.
- Envoyez une image au registre de conteneurs.
- Déployer en tant qu’instance de conteneur.
- Vérifiez la fonctionnalité de service de travail.
Conseil / Astuce
Tous les exemples de code source « Workers in .NET » sont disponibles dans l’Explorateur d’exemples pour le téléchargement. Pour plus d'informations, consultez Consultez les exemples de code : Workers pour .NET.
Prerequisites
- Kit de développement logiciel (SDK) .NET 5.0 ou version ultérieure.
- Docker Desktop (Windows ou Mac).
- Un compte Azure avec un abonnement actif. Créez un compte gratuitement.
- En fonction de votre environnement de développement de votre choix :
Créer un projet
Pour créer un projet de Service Worker avec Visual Studio, sélectionnez Fichier>nouveau>projet.... Dans la boîte de dialogue Créer un nouveau projet, recherchez « Worker Service », puis sélectionnez le modèle de Service Worker. Entrez le nom de projet souhaité, sélectionnez un emplacement approprié, puis sélectionnez Suivant. Dans la page Informations supplémentaires , pour l’infrastructure cible , sélectionnez .NET 5.0, puis cochez l’option Activer Docker pour activer la prise en charge de Docker. Sélectionnez le système d’exploitation Docker souhaité.
Pour créer un projet de service Worker avec Visual Studio Code, vous pouvez exécuter des commandes CLI .NET à partir du terminal intégré. Pour plus d’informations, consultez Visual Studio Code : Terminal intégré.
Ouvrez le terminal intégré, puis exécutez la dotnet new commande, puis remplacez le <Project.Name> nom de votre projet souhaité.
dotnet new worker --name <Project.Name>
Pour plus d’informations sur la commande de création d'un nouveau projet de service worker de .NET CLI, consultez dotnet new worker.
Pour créer un projet de service Worker avec l’interface CLI .NET, ouvrez votre terminal favori dans un répertoire de travail. Exécutez la commande dotnet new et remplacez <Project.Name> par le nom souhaité de votre projet.
dotnet new worker --name <Project.Name>
Pour plus d’informations sur la commande du nouveau projet de service worker cli .NET, consultez dotnet new worker.
Générez l’application pour vous assurer qu’elle restaure les packages dépendants et compile sans erreur.
Pour générer l’application à partir de Visual Studio, sélectionnez F6 ou sélectionnez l’option de menu Générer> lasolution.
Pour générer l’application à partir de Visual Studio Code, ouvrez la fenêtre de terminal intégrée et exécutez la dotnet build commande à partir du répertoire de travail.
dotnet build
Pour plus d’informations sur la commande de build cli .NET, consultez dotnet build.
Pour générer l’application à partir de l’interface CLI .NET, exécutez la dotnet build commande à partir du répertoire de travail.
dotnet build <path/to/project.csproj>
Spécifiez votre <path/to/project.csproj> valeur, qui est le chemin d’accès au fichier projet à générer. Pour plus d’informations sur la commande de build cli .NET, consultez dotnet build.
Ajouter la prise en charge de Docker
Si vous avez correctement coché la case Activer Docker lors de la création d’un projet Worker, passez à l’étape Générer l’image Docker .
Si vous n’avez pas sélectionné cette option, vous pouvez toujours l’ajouter maintenant. Dans Visual Studio, cliquez avec le bouton droit sur le nœud du projet dans l’Explorateur de solutions, puis sélectionnez Ajouter> unsupport Docker. Vous serez invité à sélectionner un système d’exploitation cible ; sélectionnez OK avec la sélection du système d’exploitation par défaut.
Dans Visual Studio Code, vous avez besoin de l’extension Docker et de l’extension compte Azure installée. Ouvrez la palette de commandes, puis sélectionnez l’option Docker : Ajouter des fichiers Docker à l’espace de travail . Si vous êtes invité à sélectionner la plateforme d’applications, choisissez .NET : Console Core. Si vous êtes invité à sélectionner un projet, choisissez le projet De service Worker que vous avez créé. Lorsque vous êtes invité à sélectionner le système d’exploitation, choisissez le premier système d’exploitation répertorié. Lorsque vous y êtes invité à inclure ou non des fichiers Docker Compose facultatifs, sélectionnez Non.
La prise en charge de Docker nécessite un fichier Dockerfile. Ce fichier est un ensemble d’instructions complètes pour générer votre service Worker .NET en tant qu’image Docker. Le fichier Dockerfile est un fichier sans extension de fichier. Le code suivant est un exemple de fichier Dockerfile et doit exister dans le répertoire racine du fichier projet.
Avec l’interface CLI, le fichier Dockerfilen’est pas créé pour vous. Copiez son contenu dans un nouveau fichier nommé Dockerfile dans le répertoire racine du projet.
FROM mcr.microsoft.com/dotnet/runtime:8.0@sha256:e6b552fd7a0302e4db30661b16537f7efcdc0b67790a47dbf67a5e798582d3a5 AS base
WORKDIR /app
# Creates a non-root user with an explicit UID and adds permission to access the /app folder
# For more info, please refer to https://aka.ms/vscode-docker-dotnet-configure-containers
RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser
FROM mcr.microsoft.com/dotnet/sdk:8.0@sha256:35792ea4ad1db051981f62b313f1be3b46b1f45cadbaa3c288cd0d3056eefb83 AS build
WORKDIR /src
COPY ["App.CloudService.csproj", "./"]
RUN dotnet restore "App.CloudService.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "App.CloudService.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "App.CloudService.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "App.CloudService.dll"]
Note
Vous devez mettre à jour les différentes lignes du fichier Dockerfile qui font référence à *App.CloudService, remplacez-la par le nom de votre projet.
Pour plus d’informations sur les images .NET officielles, consultez Docker Hub : .NET Runtime et Docker Hub : Kit de développement logiciel (SDK) .NET.
Créer l’image Docker
Pour générer l’image Docker, le moteur Docker doit être en cours d’exécution.
Important
Lorsque vous utilisez Docker Desktop et Visual Studio, pour éviter les erreurs liées au partage de volumes, assurez-vous que le partage de volume est activé.
- Dans l’écran Paramètres de Docker Desktop, sélectionnez Lecteurs partagés.
- Sélectionnez les lecteurs contenant vos fichiers projet.
Pour plus d’informations, consultez Résoudre les problèmes de développement Visual Studio avec Docker.
Cliquez avec le bouton droit sur le fichier Dockerfile dans l’Explorateur de solutions, puis sélectionnez Générer une image Docker. La fenêtre Sortie s’affiche, signalant la progression de la docker build commande.
Cliquez avec le bouton droit sur le fichier Dockerfile dans l’Explorateur, puis sélectionnez Générer une image. Lorsque vous êtes invité à étiqueter l'image comme, entrez appcloudservice:latest. Le terminal de sortie de tâche Docker s’affiche, signalant la progression de la commande de build Docker.
Note
Si vous n’êtes pas invité à baliser l’image, il est possible que Visual Studio Code s’appuie sur une tasks.jsonexistante. Si la balise utilisée n’est pas souhaitable, vous pouvez la modifier en mettant à jour la valeur de l’élément docker-build de dockerBuild/tag configuration dans le tasks tableau. Considérez l’exemple de section de configuration suivant :
{
"type": "docker-build",
"label": "docker-build: release",
"dependsOn": [
"build"
],
"dockerBuild": {
"tag": "appcloudservice:latest",
"dockerfile": "${workspaceFolder}/cloud-service/Dockerfile",
"context": "${workspaceFolder}",
"pull": true
},
"netCore": {
"appProject": "${workspaceFolder}/cloud-service/App.CloudService.csproj"
}
}
Ouvrez une fenêtre de terminal dans le répertoire racine du fichier Dockerfile, puis exécutez la commande Docker suivante :
docker build -t appcloudservice:latest -f Dockerfile .
Lorsque la docker build commande s’exécute, elle traite chaque ligne du fichier Dockerfile en tant qu’étape d’instruction. Cette commande génère l’image et crée un référentiel local nommé appcloudservice qui pointe vers l’image.
Conseil / Astuce
Le fichier Dockerfile généré diffère entre les environnements de développement. Par exemple, si vous ajoutez la prise en charge de Docker à partir de Visual Studio, vous pouvez rencontrer des problèmes si vous tentez de générer l’image Docker à partir de Visual Studio Code, car les étapes dockerfile varient. Il est préférable de choisir un environnement de développement unique et de l’utiliser tout au long de ce tutoriel.
Créer un registre de conteneurs
Une ressource Azure Container Registry (ACR) vous permet de générer, stocker et gérer des images et artefacts conteneur dans un registre privé. Pour créer un registre de conteneurs, vous devez créer une ressource dans le portail Azure.
- Sélectionnez l’abonnement et le groupe de ressources correspondant (ou créez-en un).
- Entrez un nom de Registre.
- Sélectionnez un emplacement.
- Sélectionnez une référence SKU appropriée, par exemple De base.
- Sélectionnez Vérifier + créer.
- Une fois la validation passée, sélectionnez Créer.
Important
Pour utiliser ce registre de conteneurs lors de la création d’une instance de conteneur, vous devez activer l’utilisateur administrateur. Sélectionnez Clés d’accès et activez l’utilisateur administrateur.
Une ressource Azure Container Registry (ACR) vous permet de générer, stocker et gérer des images et artefacts conteneur dans un registre privé. Ouvrez une fenêtre de terminal dans le répertoire racine du fichier Dockerfile, puis exécutez la commande Azure CLI suivante :
Important
Pour interagir avec les ressources Azure à partir d’Azure CLI, vous devez être authentifié pour votre session de terminal. Pour vous authentifier, utilisez la az login commande :
az login
Une fois connecté, utilisez la az account set commande pour spécifier votre abonnement lorsque vous avez plusieurs abonnements et qu’aucun abonnement par défaut n’est défini.
az account set --subscription <subscription name or id>
Une fois que vous vous connectez à Azure CLI, votre session peut interagir avec les ressources en conséquence.
Si vous n’avez pas encore de groupe de ressources auquel vous souhaitez associer votre service worker, créez-en un à l’aide de la az group create commande :
az group create -n <resource group> -l <location>
Indiquez le <resource group> nom et le <location>. Pour créer un registre de conteneurs, appelez la az acr create commande.
az acr create -n <registry name> -g <resource group> --sku <sku> --admin-enabled true
Remplacez les espaces réservés par vos propres valeurs appropriées :
-
<registry name>: nom du registre. -
<resource group>: nom du groupe de ressources que vous avez utilisé. -
<sku>: valeurs acceptées, De base, Classique, Premium ou Standard.
La commande précédente :
- Crée un Azure Container Registry, donné un nom de registre, dans le groupe de ressources spécifié.
- Activé un utilisateur administrateur : cela est requis pour Azure Container Instances.
Pour plus d’informations, consultez Démarrage rapide : Créer un registre de conteneurs Azure.
Envoyer (push) une image au registre de conteneurs
Avec l’image Docker .NET générée et la ressource de registre de conteneurs créée, vous pouvez désormais envoyer (push) l’image au registre de conteneurs.
Cliquez avec le bouton droit sur le projet dans l’Explorateur de solutions, puis sélectionnez Publier. La boîte de dialogue Publier s’affiche. Pour la cible, sélectionnez Azure , puis Suivant.
Pour la cible spécifique, sélectionnez Azure Container Registry , puis Suivant.
Ensuite, pour Container Registry, sélectionnez le nom de l’abonnement que vous avez utilisé pour créer la ressource ACR. Dans la zone de sélection des registres de conteneurs, sélectionnez le registre de conteneurs que vous avez créé, puis sélectionnez Terminer.
Cela crée un profil de publication, qui peut être utilisé pour publier l’image dans le registre de conteneurs. Sélectionnez le bouton Publier pour envoyer l’image au registre de conteneurs, la fenêtre Sortie signale la progression de la publication. Une fois l’opération terminée, un message « Publication réussie » s’affiche.
Sélectionnez Docker dans la barre d’activité dans Visual Studio Code. Développez le panneau d’arborescence IMAGES , puis développez le nœud image et cliquez avec le appcloudservice bouton droit sur la latest balise.
La fenêtre de terminal intégrée signale la progression de la docker push commande au registre de conteneurs.
Pour envoyer une image au registre de conteneurs, vous devez d’abord vous connecter au registre :
az acr login -n <registry name>
La az acr login commande se connecte à un registre de conteneurs via l’interface CLI Docker. Pour envoyer (push) l’image au registre de conteneurs, utilisez la commande az acr build avec le nom de votre registre de conteneurs comme suit <registry name>:
az acr build -r <registry name> -t appcloudservice .
La commande précédente :
- Packe la source dans un fichier tar .
- Charge-le dans le registre de conteneurs.
- Le registre de conteneurs décompresse le fichier tar .
- Exécute la commande
docker builddans la ressource de registre de conteneurs contre le Dockerfile. - Ajoute l’image au registre de conteneurs.
Pour vérifier que l'image a été transférée dans le registre de conteneurs, accédez au portail Azure. Ouvrez la ressource de registre de conteneurs, sous Services, sélectionnez Référentiels. Vous devriez voir l’image.
Déployer en tant qu’instance de conteneur
Dans Visual Studio Code, sélectionnez Docker dans la barre d’activité. Développez le nœud REGISTRYS , puis sélectionnez Connecter le Registre. Sélectionnez Azure lorsque vous y êtes invité, puis connectez-vous si nécessaire.
Important
Le déploiement en tant qu’instance de conteneur à partir de Visual Studio Code ne fonctionne plus sur Mac. Pour plus d’informations, consultez GitHub : À propos de l’extension Docker pour Visual Studio Code.
Développez le nœud REGISTRIES, sélectionnez Azure, votre abonnement > le registre de conteneurs > l'image, puis cliquez avec le bouton droit sur le tag. Sélectionnez Déployer une image sur Azure Container Instances.
Pour créer une instance de conteneur, commencez par créer un groupe de conteneurs à l’aide de la az container create commande.
az container create -g <resource group> \
--name <instance name> \
--image <registry name>.azurecr.io/<image name>:latest \
--registry-password <password>
Fournissez les valeurs appropriées :
-
<resource group>: nom du groupe de ressources que vous avez utilisé dans ce tutoriel. -
<instance name>: nom de l’instance de conteneur. -
<registry name>: nom du registre de conteneurs. -
<image name>: nom de l’image. -
<password>: le mot de passe du registre de conteneurs — vous pouvez l’obtenir à partir du portail Azure, ressource Container Registry >des clés d’accès.
Pour créer une instance de conteneur, vous devez également créer une ressource dans le portail Azure.
- Sélectionnez le même abonnement et le groupe de ressources correspondant dans la section précédente.
- Entrez un nom de conteneur.
appcloudservice-container - Sélectionnez une région qui correspond à la sélection d’emplacement précédente.
- Pour la source d’image, sélectionnez Azure Container Registry.
- Sélectionnez le Registre par le nom fourni à l’étape précédente.
- Sélectionnez Image et balise Image.
- Sélectionnez Vérifier + créer.
- En supposant que la validation est passée, sélectionnez Créer.
La création des ressources peut prendre un moment, une fois que vous avez créé, sélectionnez le bouton Accéder à la ressource .
Pour plus d’informations, consultez Démarrage rapide : Créer une instance de conteneur Azure.
Vérifier la fonctionnalité de service
Immédiatement après la création de l’instance de conteneur, elle commence à s’exécuter.
Pour vérifier que votre service worker fonctionne correctement, accédez au portail Azure dans la ressource d’instance de conteneur, sélectionnez l’option Conteneurs .
Vous verrez les conteneurs et leur état actuel. Dans ce cas, il est actif. Sélectionnez Journaux pour afficher la sortie du service worker .NET.
Pour vérifier que votre service worker fonctionne correctement, vous pouvez afficher les journaux d’activité de votre application en cours d’exécution. Utilisez la commande az container logs :
az container logs -g <resource group> --name <instance name>
Fournissez les valeurs appropriées :
-
<resource group>: nom du groupe de ressources que vous avez utilisé dans ce tutoriel. -
<instance name>: nom de l’instance de conteneur.
Vous verrez les journaux de sortie du service worker .NET, ce qui signifie que vous avez correctement déployé votre application conteneurisée sur ACI.