Propriétés de build des outils de conteneur

Vous pouvez personnaliser la façon dont Visual Studio génère vos projets de conteneur en définissant les propriétés que MSBuild utilise pour générer votre projet. Par exemple, vous pouvez modifier le nom du fichier Dockerfile, spécifier des balises et des étiquettes pour vos images, fournir des arguments supplémentaires passés aux commandes Docker et contrôler si Visual Studio effectue certaines optimisations des performances, comme la génération en dehors de l’environnement de conteneur. Vous pouvez également définir des propriétés de débogage comme le nom de l’exécutable à lancer et les arguments de ligne de commande à fournir.

Pour définir la valeur d’une propriété, modifiez le fichier projet. Par exemple, supposons que votre fichier Dockerfile soit nommé MyDockerfile. Vous pouvez définir la propriété DockerfileFile dans le fichier projet comme suit.

<PropertyGroup>
   <DockerfileFile>MyDockerfile</DockerfileFile>
</PropertyGroup>

Vous pouvez ajouter le paramètre de propriété à un élément PropertyGroup existant ou, s’il n’en existe pas, créer un nouvel élément PropertyGroup.

Propriétés pour les projets du SDK .NET

Cette section décrit les propriétés MSBuild qui s’appliquent lorsque vous choisissez le type de build de conteneur de SDK .NET.

Une seule propriété, EnableSdkContainerDebugging, dans le fichier projet est nécessaire pour les projets conteneurisés du SDK .NET. Elle doit être définie sur True pour les projets du SDK .NET afin d’activer le débogage.

<PropertyGroup>
   <EnableSdkContainerDebugging>True</EnableSdkContainerDebugging>
</PropertyGroup>

Propriétés pour les projets Dockerfile

Cette section décrit les propriétés MSBuild qui s’appliquent lorsque vous choisissez le type de build de conteneur Dockerfile.

Le tableau suivant montre les propriétés MSBuild disponibles pour les projets Dockerfile. La version du package NuGet s’applique à Microsoft.VisualStudio.Azure.Containers.Tools.Targets.

Nom de la propriété Description Valeur par défaut Version de package NuGet
ContainerDevelopmentMode Contrôle si l’optimisation « build-on-host » (débogage en mode rapide) est activée. Les valeurs autorisées sont Rapide et Standard. Rapide 1.0.1872750 ou version ultérieure
ContainerVsDbgPath Chemin du débogueur VSDBG. %USERPROFILE%\vsdbg\vs2017u5 1.0.1985401 ou version ultérieure
DockerDebuggeeArguments Lors du débogage, le débogueur est invité à passer ces arguments au fichier exécutable lancé. Non applicable aux projets ASP.NET .NET Framework 1.7.8 ou version ultérieure
DockerDebuggeeProgram Lors du débogage, le débogueur est invité à lancer ce fichier exécutable. Pour les projets .NET Core et .NET 5 et versions ultérieures : dotnet, Projets ASP.NET et .NET Framework : non applicable (IIS est toujours utilisé) 1.7.8 ou version ultérieure
DockerDebuggeeKillProgram Cette commande est utilisée pour arrêter le processus en cours d’exécution dans un conteneur. Non applicable aux projets ASP.NET .NET Framework 1.7.8 ou version ultérieure
DockerDebuggeeWorkingDirectory Lors du débogage, le débogueur est invité à utiliser ce chemin comme répertoire de travail. C:\app (Windows) ou /app (Linux) 1.7.8 ou version ultérieure
DockerDefaultTargetOS Système d’exploitation cible par défaut utilisé lors de la génération de l’image Docker. Défini par Visual Studio. 1.0.1985401 ou version ultérieure
DockerImageLabels Jeu d’étiquettes par défaut appliqué à l’image Docker. com.microsoft.created-by=visual-studio;com.microsoft.visual-studio.project-name=$(MSBuildProjectName) 1.5.4 ou version ultérieure
DockerFastModeProjectMountDirectory En Mode rapide, cette propriété contrôle l’emplacement où le répertoire de sortie du projet est monté en volume dans le conteneur en cours d’exécution. C:\app (Windows) ou /app (Linux) 1.9.2 ou version ultérieure
DockerfileBuildArguments Arguments supplémentaires passés à la commande Docker build. Non applicable. 1.0.1872750 ou version ultérieure
DockerfileContext Contexte par défaut utilisé au moment de la génération de l’image Docker, sous forme de chemin relatif au Dockerfile. Définie par Visual Studio quand la prise en charge de Docker est ajoutée à un projet. Dans les projets .NET Framework, définie sur « . » (le dossier du projet) et, dans les projets .NET Core et .NET 5 et versions ultérieures, elle est définie sur le chemin d’accès relatif du dossier de solution (généralement « .. »). 1.0.1872750 ou version ultérieure
DockerfileFastModeStage Étape Dockerfile (c’est-à-dire cible) à utiliser lors de la génération de l’image en mode débogage. Première étape trouvée dans le Dockerfile (généralement de base)
DockerfileFile Décrit le Dockerfile a utiliser par défaut pour générer/exécuter le conteneur pour le projet. Cette valeur peut être un chemin d'accès. Dockerfile 1.0.1872750 ou version ultérieure
DockerfileRunArguments Arguments supplémentaires passés à la commande Docker run. Non applicable. 1.0.1872750 ou version ultérieure
DockerfileRunEnvironmentFiles Liste délimitée par des points-virgules des fichiers d’environnement appliqués pendant l’exécution de Docker. Non applicable. 1.0.1872750 ou version ultérieure
DockerfileTag Balise à utiliser lors de la génération de l’image Docker. Lors du débogage, « :dev » est ajouté à la balise. Nom de l’assembly après suppression des caractères non alphanumériques avec les règles suivantes :
Si la balise résultante est numérique, « image » est inséré en tant que préfixe (par exemple, image2314)
Si la balise résultante est une chaîne vide, « image » est utilisé comme balise.
1.0.1872750 ou version ultérieure

Exemple

Le fichier projet suivant montre des exemples de certains de ces paramètres.

 <Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <UserSecretsId>feae72bf-2368-4487-b6c6-546c19338cb1</UserSecretsId>
    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
    <!-- In CI/CD scenarios, you might need to change the context. By default, Visual Studio uses the
         folder above the Dockerfile. The path is relative to the Dockerfile, so here the context is
         set to the same folder as the Dockerfile. -->
    <DockerfileContext>.</DockerfileContext>
    <!-- Set `docker run` arguments to mount a volume -->
    <DockerfileRunArguments>-v $(MSBuildProjectDirectory)/host-folder:/container-folder:ro</DockerfileRunArguments>
    <!-- Set `docker build` arguments to add a custom tag -->
    <DockerfileBuildArguments>-t contoso/front-end:v2.0</DockerfileBuildArguments>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.10.6" />
  </ItemGroup>

</Project>

Notes

Le contexte Docker, que vous pouvez définir en fournissant une valeur pour DockerfileContext, est généralement différent dans Visual Studio pour les projets ciblant .NET Core (y compris .NET 5 et versions ultérieures) par rapport à ce que docker build utilise quand vous l’exécutez à partir de la ligne de commande. La différence par rapport au comportement de docker build est nécessaire pour que les artefacts de build au niveau de la solution puissent être inclus.

Quand vous appelez docker build, vous spécifiez toujours un contexte de build et vous pouvez éventuellement spécifier un chemin du fichier Dockerfile. Par défaut, le fichier Dockerfile se trouve à la racine du contexte, mais vous pouvez utiliser l’indicateur -f pour spécifier un autre emplacement. Par exemple, vous pouvez générer avec docker build -f Dockerfile .. à partir du répertoire du projet ou docker build -f ProjectName/Dockerfile . à partir du répertoire de solution.

Étapes suivantes

Pour plus d’informations sur les propriétés MSBuild en général, consultez Propriétés MSBuild.

Voir aussi

Propriétés de build Docker Compose

Paramètres de lancement des outils de conteneur

Propriétés réservées et connues de MSBuild