Partage via


Démarrage rapide : Docker dans Visual Studio

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

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

  1. Créez un projet à l’aide du modèle ASP.NET Core Web App ou si vous souhaitez utiliser le .NET Framework au lieu de .NET Core, choisissez ASP.NET application web (.NET Framework).

  2. Dans l’écran Créer une application web écran, vérifiez que la case Activer la prise en charge de Docker est cochée.

    capture d’écran de la case à cocher Activer la prise en charge de Docker.

    La capture d’écran montre .NET Core ; si vous utilisez .NET Framework, il semble un peu différent.

  3. Sélectionnez le type de conteneur souhaité (Windows ou Linux), puis cliquez sur Créer.

Vue d’ensemble de Dockerfile

Un Dockerfile, la recette de création d’une image Docker finale, est créée dans le projet. Consultez les Informations de référence sur 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 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 Configurer pour HTTPS de la boîte de dialogue de nouveau projet est cochée, la 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ébogage

Sélectionnez Docker dans la liste déroulante de débogage dans la barre d’outils, puis commencez à déboguer 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 Outil conteneur dans la fenêtre Sortie indique les actions en cours. 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.

Remarque

Si vous devez modifier les ports pour le débogage, vous pouvez le faire dans le fichier launchSettings.json. Consultez 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 que vous avez disponibles.

Ouvrez la fenêtre Conteneurs à l’aide de la zone de recherche de 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 déplaçant la fenêtre et en suivant les indicateurs de position 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.

capture d’écran de la fenêtre Conteneurs.

Pour plus d’informations, consultez Utiliser la fenêtre 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.

  1. Modifiez la liste déroulante de configuration en Release et générez l’application.

  2. Cliquez avec le bouton droit sur votre projet dans Explorateur de solutions, puis choisissez Publier.

  3. Dans la boîte de dialogue Publier, sélectionnez l’onglet Docker Container Registry.

    Capture d’écran de la boîte de dialogue Publier : choisissez Docker Container Registry.

  4. Choisissez Créer un nouvel Azure Container Registry.

    capture d’écran de la boîte de dialogue Publier : choisissez Créer un registre de conteneurs Azure.

  5. Renseignez les valeurs souhaitées dans la section "Créer un nouveau registre de conteneurs Azure".

    Réglage Valeur suggérée Description
    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.
    Référence SKU Standard 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.

    Capture d’écran de la boîte de dialogue Créer Azure Container Registry de Visual Studio.

  6. Cliquez sur Créer. La boîte de dialogue Publier affiche désormais le registre créé.

    Capture d’écran de la boîte de dialogue de publication montrant qu'Azure Container Registry a été créé.

  7. Choisissez Terminer pour terminer le processus de publication de votre image conteneur dans le registre nouvellement créé dans Azure.

    Capture d’écran montrant la publication réussie.

É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

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

  1. 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.

  2. Créez un projet à l’aide du modèle ASP.NET Core Web App ou si vous souhaitez utiliser le .NET Framework au lieu de .NET Core, choisissez ASP.NET application web (.NET Framework).

  3. Dans l’écran Créer une application web écran, vérifiez que la case Activer la prise en charge de Docker est cochée.

    capture d’écran de la case à cocher Activer la prise en charge de Docker.

    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.

  4. 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 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 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 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 construisant 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 Configurer pour HTTPS de la boîte de dialogue de nouveau projet est cochée, la 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ébogage

Sélectionnez Docker dans la liste déroulante de débogage dans la barre d’outils, puis commencez à déboguer 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 Outil conteneur dans la fenêtre Sortie indique les actions en cours. 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.

Remarque

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 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 de l’IDE (appuyez sur Ctrl+Q pour l’utiliser), tapez container, puis choisissez la fenêtre conteneurs dans la liste.

Vous pouvez placer la fenêtre conteneurs dans un endroit pratique, par exemple sous l'éditeur, en la déplaçant et en suivant les guides de placement de fenêtres.

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.

capture d’écran de la fenêtre Conteneurs.

Pour plus d’informations, consultez Utiliser la fenêtre 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.

  1. Modifiez la liste déroulante de configuration en Release et générez l’application.

  2. Cliquez avec le bouton droit sur votre projet dans Explorateur de solutions, puis choisissez Publier.

  3. Dans la boîte de dialogue Publier, sélectionnez l’onglet Docker Container Registry.

    Capture d’écran de la boîte de dialogue Publier : choisissez Docker Container Registry.

  4. Choisissez Créer un nouveauAzure Container Registry.

    capture d’écran de la boîte de dialogue Publier : choisissez Créer un registre de conteneurs Azure.

  5. Renseignez les valeurs souhaitées dans Créer un Azure Container Registry.

    Réglage Valeur suggérée Description
    Préfixe DNS Nom globalement unique 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.
    Référence SKU Standard 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.

    Capture d’écran de la boîte de dialogue Créer Azure Container Registry de Visual Studio.

  6. Sélectionnez Créer. La fenêtre Publier affiche désormais le registre créé.

    Capture d’écran de la boîte de dialogue Publier montrant un Azure Container Registry créé.

  7. Choisissez Terminer pour terminer le processus de publication de votre image conteneur dans le registre nouvellement créé dans Azure.

    Capture d’écran montrant la publication réussie.

É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.

Ressources additionnelles