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, ASP.NET projets .NET Framework : Non applicable (INTERNET Information Services (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>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UserSecretsId>8c7ab9a5-d578-4c40-8b6d-54d174002229</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.20.1" />
</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