Partager via


Personnaliser le mappage de volume de conteneur

Pour que le débogage fonctionne dans des conteneurs, Visual Studio utilise le mappage de volume pour mapper le débogueur et les dossiers NuGet à partir de l’ordinateur hôte. Le mappage de volume est décrit dans la documentation Docker ici. Vous pouvez afficher les mappages de volumes pour un conteneur à l’aide de la fenêtre conteneurs dans Visual Studio.

Conditions préalables

  • Docker Desktop.
  • Visual Studio avec la charge de travail de développement ASP.NET et web, la charge de travail de développement Azure et/ou la charge de travail de développement de bureau .NET installée.

Montages de volume dans les images de conteneur de Visual Studio

Voici les volumes montés dans votre conteneur. Ce que vous voyez dans vos conteneurs peut différer en fonction de la version mineure de Visual Studio que vous utilisez.

Volume Description
Dossier d’application Contient le dossier du projet où se trouve le fichier Dockerfile.
Dossiers de packages NuGet Contient les packages NuGet et les dossiers de secours qui sont lus à partir du fichier obj{project}.csproj.nuget.g.props dans le projet.
Débogueur distant Contient les bits nécessaires pour exécuter le débogueur dans le conteneur en fonction du type de projet. Pour plus d’informations, consultez Personnaliser des images de conteneurs pour le débogage.
Dossier source Contient le contexte de génération qui est passé aux commandes Docker.
VSTools Contient les outils Visual Studio qui prennent en charge l’utilisation du conteneur, notamment la prise en charge du débogueur, la fenêtre Conteneurs, la gestion des jetons Azure, l’agent Hot Reload et l'outil Distroless Helper.

Pour .NET 8, des points de montage supplémentaires à la racine et pour l’utilisateur de l’application qui contiennent des secrets utilisateur et le certificat HTTPS peuvent également être présents.

Remarque

Si vous utilisez le moteur Docker dans le sous-système Windows pour Linux (WSL) sans Docker Desktop, définissez la variable VSCT_WslDaemon=1 d’environnement pour que Visual Studio utilise des chemins WSL lors de la création de montages de volumes. Le package NuGet Microsoft.VisualStudio.Azure.Containers.Tools.Targets 1.20.0-Preview 1 est également nécessaire.

Voici les volumes montés dans votre conteneur. Ce que vous voyez dans vos conteneurs peut différer en fonction de la version mineure de Visual Studio 2022 que vous utilisez.

Volume Description
Dossier d’application Contient le dossier du projet où se trouve le fichier Dockerfile.
Dossiers de packages NuGet Contient les packages NuGet et les dossiers de secours qui sont lus à partir du fichier obj{project}.csproj.nuget.g.props dans le projet.
Débogueur distant Contient les bits nécessaires pour exécuter le débogueur dans le conteneur en fonction du type de projet. Pour plus d’informations, consultez Personnaliser des images de conteneurs pour le débogage.
Dossier source Contient le contexte de génération qui est passé aux commandes Docker.
VSTools Contient les outils Visual Studio qui prennent en charge l’utilisation du conteneur, notamment la prise en charge du débogueur, la fenêtre Conteneurs, la gestion des jetons Azure, l’agent Hot Reload et l'outil Distroless Helper.

Pour .NET 8, des points de montage supplémentaires à la racine et pour l’utilisateur de l’application qui contiennent des secrets utilisateur et le certificat HTTPS peuvent également être présents.

Remarque

Visual Studio 17.10 et versions ultérieures Si vous utilisez le moteur Docker dans le sous-système Windows pour Linux (WSL) sans Docker Desktop, définissez la variable VSCT_WslDaemon=1 d’environnement pour que Visual Studio utilise des chemins WSL lors de la création de montages de volumes. Le package NuGet Microsoft.VisualStudio.Azure.Containers.Tools.Targets 1.20.0-Preview 1 est également nécessaire.

Pour ASP.NET applications web principales, il peut y avoir deux dossiers supplémentaires pour le certificat SSL et les secrets utilisateur, qui sont expliqués plus en détail dans Utiliser SSL pour les applications ASP.NET Core conteneurisées

Monter un volume de conteneur

Vous pouvez monter un autre volume à l'aide de l'argument de la ligne de commande docker run.

  1. Ouvrez le fichier projet pour le projet conteneurisé.

  2. Pour spécifier un nouvel argument de ligne de commande, ajoutez la propriété MSBuild DockerfileRunArgumentset fournissez la syntaxe -v ou --mount. Par exemple, la syntaxe suivante crée un volume myvolume et le monte dans le conteneur dans le dossier /scratch.

    <PropertyGroup>
       <DockerfileRunArguments>-v myvolume:/scratch</DockerfileRunArguments>
    </PropertyGroup>
    

    Reportez-vous à la documentation Docker pour la syntaxe de ligne de commande des options -v ou --mount.

Vous pouvez monter un autre volume en spécifiant des arguments de ligne de commande pour le runtime de conteneur, docker.exe ou podman.exe.

  1. Ouvrez launchSettings.json pour le projet conteneurisé.

  2. Pour spécifier un nouvel argument de ligne de commande, ajoutez le JSON containerRunArguments et fournissez la syntaxe -v ou --mount. Par exemple, la syntaxe suivante crée un volume myvolume et le monte dans le conteneur dans le dossier /scratch.

    "containerRunArguments": "-v myvolume:/scratch"
    

    Reportez-vous à la documentation du fournisseur d’exécution de conteneur pour la syntaxe de ligne de commande pour les options Docker -v ou --mount , ou l’option podman -v et l’option Podman --mount.