Notes
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.
Avec Visual Studio, vous pouvez facilement générer, déboguer et exécuter des applications .NET conteneurisées, ASP.NET et ASP.NET Core, et les publier dans Azure Container Registry, Docker Hub, Azure App Service ou votre propre registre de conteneurs. Dans cet article, nous allons publier une application ASP.NET Core dans Azure Container Registry.
Conditions préalables
- Docker Desktop
- Visual Studio 2019 avec la charge de travail développement web, Azure Tools et/ou .NET Core multiplateforme installée
- Outils de développement .NET Core pour le développement avec .NET Core
- Pour publier sur Azure Container Registry, un abonnement Azure. Inscrivez-vous à un essai gratuit.
Installation et configuration
Pour l’installation de Docker, passez d’abord en revue les informations de Docker Desktop pour Windows : Que savoir avant d’installer. Ensuite, installez Docker Desktop.
Ajouter un projet à un conteneur Docker
Créez un projet à l’aide du modèle ASP.NET Core Web App ou si vous souhaitez utiliser .NET Framework au lieu de .NET Core, choisissez ASP.NET application web (.NET Framework) .
Dans l’écran Créer une application web , vérifiez que la case Activer la prise en charge de Docker est cochée.
La capture d’écran montre .NET Core ; si vous utilisez .NET Framework, il semble un peu différent.
Sélectionnez le type de conteneur souhaité (Windows ou Linux), puis cliquez sur Créer.
Vue d’ensemble de Dockerfile
Un fichier Dockerfile, la recette de création d’une image Docker finale, est créé dans le projet. Reportez-vous à la référence Dockerfile pour comprendre les commandes qu’il contient.
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY ["WebApplication1/WebApplication1.csproj", "WebApplication1/"]
RUN dotnet restore "WebApplication1/WebApplication1.csproj"
COPY . .
WORKDIR "/src/WebApplication1"
RUN dotnet build "WebApplication1.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "WebApplication1.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication1.dll"]
Le fichier Dockerfile précédent est basé sur l’image dotnet/core/aspnet, et inclut des instructions pour modifier l’image de base en créant votre projet et en l’ajoutant au conteneur. Si vous utilisez le .NET Framework, l’image de base sera différente.
Lorsque la case à cocher Configurer pour HTTPS de la boîte de dialogue du nouveau projet est cochée, le Dockerfile expose deux ports. Un port est utilisé pour le trafic HTTP ; l’autre port est utilisé pour HTTPS. Si la case à cocher n’est pas cochée, un seul port (80) est exposé pour le trafic HTTP.
Déboguer
Sélectionnez Docker dans la liste déroulante de débogage dans la barre d’outils et démarrez le débogage de l’application. Vous pouvez voir un message avec une invite sur l’approbation d’un certificat ; choisissez d’approuver le certificat pour continuer.
L’option Outils de conteneur dans la fenêtre Sortie indique les actions qui se produisent. La première fois, il peut prendre un certain temps pour télécharger l’image de base, mais il est beaucoup plus rapide lors des exécutions suivantes.
Note
Si vous devez modifier les ports pour le débogage, vous pouvez le faire dans le fichier launchSettings.json . Consultez les paramètres de lancement de conteneur.
Fenêtre de conteneurs
Si vous disposez de Visual Studio 2019 version 16.4 ou ultérieure, vous pouvez utiliser la fenêtre Conteneurs pour afficher les conteneurs en cours d’exécution sur votre ordinateur, ainsi que les images disponibles.
Ouvrez la fenêtre Conteneurs à l’aide de la zone de recherche dans l’IDE ( appuyez sur Ctrl+Q pour l’utiliser), tapez container
, puis choisissez la fenêtre Conteneurs dans la liste.
Vous pouvez monter la fenêtre Conteneurs dans un endroit pratique, tel que sous l’éditeur, en la déplaçant et en suivant les repères de placement de fenêtre.
Dans la fenêtre, recherchez votre conteneur et parcourez chaque onglet pour afficher les variables d’environnement, les mappages de ports, les journaux et le système de fichiers.
Pour plus d’informations, consultez la fenêtre Utiliser les conteneurs.
Publier des images Docker
Une fois le cycle de développement et de débogage de l’application terminé, vous pouvez créer une image de production de l’application.
Changez la liste déroulante de configuration en Libérer et générez l’application.
Cliquez avec le bouton droit sur votre projet dans l’Explorateur de solutions , puis choisissez Publier.
Dans la boîte de dialogue Publier , sélectionnez l’onglet Docker Container Registry .
Choisissez Créer un registre de conteneurs Azure.
Renseignez les valeurs souhaitées dans la section Créer un registre de conteneurs Azure.
Réglage Valeur suggérée Descriptif Préfixe DNS Nom unique au monde Nom qui identifie de façon unique votre registre de conteneurs. Abonnement Choisir votre abonnement Sélectionnez l’abonnement Azure à utiliser. Groupe de ressources myResourceGroup Nom du groupe de ressources dans lequel créer votre registre de conteneurs. Choisissez Nouveau pour créer un groupe de ressources. SKU Norme Niveau de service du registre de conteneurs Emplacement du Registre Un emplacement proche de vous Choisissez un emplacement dans une région près de vous ou près d’autres services qui utiliseront votre registre de conteneurs. Cliquez sur Créer. La boîte de dialogue Publier affiche maintenant le Registre créé.
Choisissez Terminer pour terminer le processus de publication de votre image conteneur dans le registre nouvellement créé dans Azure.
Étapes suivantes
Vous pouvez maintenant extraire le conteneur du registre vers n’importe quel hôte capable d’exécuter des images Docker, par exemple Azure Container Instances.
Avec Visual Studio, vous pouvez facilement générer, déboguer et exécuter des applications .NET conteneurisées, ASP.NET et ASP.NET Core, et les publier dans Azure Container Registry, Docker Hub, Azure App Service ou votre propre registre de conteneurs. Dans cet article, vous publiez une application ASP.NET Core dans Azure Container Registry.
Conditions préalables
- Docker Desktop
- Visual Studio 2022 avec la charge de travail développement web, Azure Tools et/ou .NET Desktop installée
- Pour publier sur Azure Container Registry, un abonnement Azure. Inscrivez-vous à un essai gratuit.
Installation et configuration
Pour l’installation de Docker, passez d’abord en revue les informations de Docker Desktop pour Windows : Que savoir avant d’installer. Ensuite, installez Docker Desktop.
Ajouter un projet à un conteneur Docker
Avant de créer le projet Visual Studio, vérifiez que Docker Desktop exécute le type de conteneurs (Windows ou Linux) que vous envisagez d’utiliser dans votre projet Visual Studio.
Pour modifier le type de conteneur utilisé par Docker Desktop, cliquez avec le bouton droit sur l’icône Docker (baleine) dans la barre des tâches, puis choisissez Basculer vers des conteneurs Linux ou Basculer vers des conteneurs Windows.
Avertissement
Si vous changez le type de conteneur après avoir créé le projet Visual Studio, les fichiers image Docker risquent de ne pas être chargés.
Créez un projet à l’aide du modèle ASP.NET Core Web App ou si vous souhaitez utiliser .NET Framework au lieu de .NET Core, choisissez ASP.NET application web (.NET Framework) .
Dans l’écran Créer une application web , vérifiez que la case Activer la prise en charge de Docker est cochée.
La capture d’écran montre la dernière version avec .NET 8.0. Si vous utilisez .NET Framework, la boîte de dialogue semble un peu différente.
Sélectionnez le type de conteneur souhaité (Windows ou Linux), puis sélectionnez Créer.
Vue d’ensemble de Dockerfile
Visual Studio crée un fichier Dockerfile dans votre projet, qui fournit la recette permettant de créer une image Docker finale. Pour plus d’informations, consultez la référence dockerfile pour plus d’informations sur les commandes utilisées dans le fichier Dockerfile.
#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
# This stage is used when running from VS in fast mode (Default for Debug configuration)
FROM mcr.microsoft.com/dotnet/aspnet:8.0-nanoserver-1809 AS base
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
# This stage is used to build the service project
FROM mcr.microsoft.com/dotnet/sdk:8.0-nanoserver-1809 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["MyWepApp/MyWebApp.csproj", "MyWebApp/"]
RUN dotnet restore "./MyWebApp/./MyWebApp.csproj"
COPY . .
WORKDIR "/src/MyWebApp"
RUN dotnet build "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/build
# This stage is used to publish the service project to be copied to the final stage
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/publish /p:UseAppHost=false
# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyWebApp.dll"]
Le fichier Dockerfile précédent est basé sur l’image Microsoft Container Registry (MCR) .NET 8 et inclut des instructions pour modifier l’image de base en créant le projet nommé MyWebApp
et en l’ajoutant au conteneur. Si vous utilisez le .NET Framework, l’image de base est différente.
Lorsque la case à cocher Configurer pour HTTPS de la boîte de dialogue du nouveau projet est cochée, le Dockerfile expose deux ports. Un port est utilisé pour le trafic HTTP ; l’autre port est utilisé pour HTTPS. Si la case à cocher n’est pas cochée, un seul port (80) est exposé pour le trafic HTTP.
Avec Visual Studio 2022 version 17.7 ou ultérieure, vous pouvez cibler .NET 8. Dans ce cas, vous avez l’avantage d’être en mesure d’exécuter votre application de manière plus sécurisée, en tant qu’utilisateur normal, plutôt qu’avec des autorisations élevées. Le fichier Dockerfile par défaut généré par Visual Studio pour les projets .NET 8 est configuré pour s’exécuter en tant qu’utilisateur normal. Pour activer ce comportement sur un projet existant, ajoutez la ligne USER app
au fichier Dockerfile dans l’image de base. En outre, étant donné que le port 80 est restreint pour les utilisateurs normaux, exposez les ports 8080 et 8081 au lieu de 80 et 443. Le port 8080 est utilisé pour le trafic HTTP et le port 8081 est utilisé pour HTTPS. Pour s’exécuter en tant qu’utilisateur normal, le conteneur doit utiliser une image de base .NET 8 et l’application doit s’exécuter en tant qu’application .NET 8. Une fois configuré correctement, votre fichier Dockerfile doit contenir du code comme dans l’exemple suivant :
FROM mcr.microsoft.com/dotnet/aspnet:8.0-preview AS base
USER app
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
Déboguer
Sélectionnez Docker dans la liste déroulante de débogage dans la barre d’outils et démarrez le débogage de l’application. Vous pouvez voir un message avec une invite sur l’approbation d’un certificat ; choisissez d’approuver le certificat pour continuer.
L’option Outils de conteneur dans la fenêtre Sortie indique les actions qui se produisent. La première fois, il peut prendre un certain temps pour télécharger l’image de base, mais il est plus rapide lors des exécutions suivantes.
Une fois la build terminée, le navigateur s’ouvre et affiche la page d’accueil de votre application. Dans la barre d’adresses du navigateur, vous pouvez voir l’URL et le numéro de port localhost
pour le débogage.
Note
Si vous devez modifier les ports pour le débogage, vous pouvez le faire dans le fichier launchSettings.json
. Consultez les paramètres de lancement de conteneur.
Fenêtre de conteneurs
Vous pouvez utiliser la fenêtre Conteneurs pour afficher les conteneurs en cours d’exécution sur votre ordinateur et d’autres images disponibles.
Ouvrez la fenêtre Conteneurs à l’aide de la zone de recherche dans l’IDE ( appuyez sur Ctrl+Q pour l’utiliser), tapez container
, puis choisissez la fenêtre Conteneurs dans la liste.
Vous pouvez monter la fenêtre Conteneurs dans un endroit pratique, tel que sous l’éditeur, en la déplaçant et en suivant les repères de placement de fenêtre.
Dans la fenêtre, recherchez votre conteneur et parcourez chaque onglet pour afficher les variables d’environnement, les mappages de ports, les journaux et le système de fichiers.
Pour plus d’informations, consultez la fenêtre Utiliser les conteneurs.
Publier des images Docker
Une fois le cycle de développement et de débogage de l’application terminé, vous pouvez créer une image de production de l’application.
Changez la liste déroulante de configuration en Libérer et générez l’application.
Cliquez avec le bouton droit sur votre projet dans l’Explorateur de solutions , puis choisissez Publier.
Dans la boîte de dialogue Publier , sélectionnez l’onglet Docker Container Registry .
Choisissez Créer un registre de conteneurs Azure.
Renseignez les valeurs souhaitées dans la section Créer un registre de conteneurs Azure.
Réglage Valeur suggérée Descriptif Préfixe DNS Nom unique au monde Nom qui identifie de façon unique votre registre de conteneurs. Abonnement Choisir votre abonnement Sélectionnez l’abonnement Azure à utiliser. Groupe de ressources myResourceGroup Nom du groupe de ressources dans lequel créer votre registre de conteneurs. Choisissez Nouveau pour créer un groupe de ressources. SKU Norme Niveau de service du registre de conteneurs Emplacement du Registre Un emplacement proche de vous Choisissez un emplacement dans une région près de vous ou près d’autres services qui peuvent utiliser votre registre de conteneurs. Sélectionnez Créer. La boîte de dialogue Publier affiche maintenant le Registre créé.
Choisissez Terminer pour terminer le processus de publication de votre image conteneur dans le registre nouvellement créé dans Azure.
Étapes suivantes
Vous pouvez maintenant extraire le conteneur du registre vers n’importe quel hôte capable d’exécuter des images Docker, par exemple Azure Container Instances.