Partage via


Propriétés de génération Docker Compose

En plus des propriétés qui contrôlent les projets Docker individuels, décrites dans Propriétés de génération des outils de conteneur, vous pouvez également personnaliser la façon dont Visual Studio génère vos projets Docker Compose en définissant les propriétés Docker Compose que MSBuild utilise pour générer votre solution. Vous pouvez également contrôler la façon dont le débogueur Visual Studio exécute vos applications Docker Compose en définissant des étiquettes de fichier dans les fichiers de configuration Docker Compose.

Comment définir les propriétés MSBuild

Pour définir la valeur d’une propriété, modifiez le fichier projet. Pour les propriétés Docker Compose, ce fichier projet est celui qui a une extension .dcproj, sauf indication contraire dans le tableau de la section suivante. Par exemple, supposons que vous voulez spécifier le lancement du navigateur au démarrage du débogage. Vous pouvez définir la propriété DockerLaunchAction dans le fichier projet .dcproj de la façon suivante.

<PropertyGroup>
   <DockerLaunchAction>LaunchBrowser</DockerLaunchAction>
</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 élément PropertyGroup.

Propriétés MSBuild Docker Compose

Le tableau suivant montre les propriétés MSBuild disponibles pour les projets Docker Compose.

Nom de la propriété Emplacement Description Valeur par défaut
AdditionalComposeFilePaths dcproj Spécifie des fichiers Compose supplémentaires dans une liste délimitée par des points-virgules à envoyer à docker-compose.exe pour toutes les commandes. Les chemins relatifs du fichier projet Docker Compose (dcproj) sont autorisés. -
DockerComposeBaseFilePath dcproj Spécifie la première partie des noms de fichiers des fichiers Docker Compose, sans l’extension .yml . Par exemple :
1. DockerComposeBaseFilePath = null/undefined : utilisez le chemin docker-composedu fichier de base et les fichiers seront nommés docker-compose.yml et docker-compose.override.yml.
2. DockerComposeBaseFilePath = mydockercompose : les fichiers sont nommés mydockercompose.yml et mydockercompose.override.yml.
3. DockerComposeBaseFilePath = ..\mydockercompose : les fichiers sont montés d’un niveau.
docker-compose
DockerComposeBuildArguments dcproj Spécifie les paramètres supplémentaires à passer à la commande docker-compose build. Par exemple : --parallel --pull.
DockerComposeDownArguments dcproj Spécifie les paramètres supplémentaires à passer à la commande docker-compose down. Par exemple, --timeout 500. -
DockerComposeEnvFilePath dcproj Chemin relatif d’un fichier .env qui sera transmis aux commandes docker compose via --env-file. Consultez la section Substitute with a .env file (Remplacer par un fichier .env). Empty
DockerComposeProjectName dcproj Si elle est spécifiée, remplace le nom du projet pour un projet Docker Compose. « dockercompose » + hachage généré automatiquement
DockerComposeProjectPath csproj ou vbproj Chemin relatif du fichier de projet Docker Compose (dcproj). Définissez cette propriété quand vous publiez le projet de service pour rechercher les paramètres de génération de l’image associée stockés dans le fichier docker-compose.yml. -
DockerComposeProjectsToIgnore dcproj Spécifie les projets à ignorer par les outils Docker Compose pendant le débogage. Cette propriété peut être utilisée pour n’importe quel projet. Les chemins de fichier peuvent être spécifiés de deux façons :
1. Relatifs à dcproj. Par exemple : <DockerComposeProjectsToIgnore>path\to\AngularProject1.csproj</DockerComposeProjectsToIgnore>.
2. Chemins absolus.
Remarque : Les chemins doivent être séparés par le caractère délimiteur ;.
-
DockerComposeUpArguments dcproj Spécifie les paramètres supplémentaires à passer à la commande docker-compose up. Par exemple : --timeout 500. -
DockerDevelopmentMode dcproj Contrôle si le projet utilisateur est généré dans le conteneur. Les valeurs autorisées Fast ou Regular contrôlent les phases qui sont générées dans un fichier Dockerfile. La configuration Debug est définie sur le mode Fast par défaut et le mode Regular dans le cas contraire. Rapide
DockerLaunchAction dcproj Spécifie l’action de lancement à effectuer avec F5 ou Ctrl+F5. Les valeurs autorisées sont None, LaunchBrowser et LaunchWCFTestClient. None
DockerLaunchBrowser dcproj Indique s’il faut lancer le navigateur. Ignoré si DockerLaunchAction est spécifié. False
DockerServiceName dcproj Si DockerLaunchAction ou DockerLaunchBrowser sont spécifiés, DockerServiceName spécifie le service référencé dans le docker-compose fichier. -
DockerServiceUrl dcproj URL à utiliser au lancement du navigateur. Les jetons de remplacement valides sont « {ServiceIPAddress} », « {ServicePort} » et « {Scheme} ». Par exemple : {Scheme}://{ServiceIPAddress}:{ServicePort} -
DockerTargetOS dcproj Système d’exploitation cible utilisé pour la génération de l’image Docker. -

Exemple

Si vous modifiez l’emplacement des fichiers, en définissant DockerComposeBaseFilePath sur un chemin d’accès relatif, vous devez également vous assurer que le contexte de docker-compose build est modifié afin qu’il référence le dossier de la solution. Par exemple, si votre docker-compose fichier est un dossier appelé DockerComposeFiles, le fichier Docker Compose doit définir le contexte de génération sur « ». » ou « . ». /.. », selon l’endroit où il est relatif au dossier de solution.

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" Sdk="Microsoft.Docker.Sdk">
  <PropertyGroup Label="Globals">
    <ProjectVersion>2.1</ProjectVersion>
    <DockerTargetOS>Windows</DockerTargetOS>
    <ProjectGuid>154022c1-8014-4e9d-bd78-6ff46670ffa4</ProjectGuid>
    <DockerLaunchAction>LaunchBrowser</DockerLaunchAction>
    <DockerServiceUrl>{Scheme}://{ServiceIPAddress}{ServicePort}</DockerServiceUrl>
    <DockerServiceName>webapplication1</DockerServiceName>
    <DockerComposeBaseFilePath>DockerComposeFiles\mydockercompose</DockerComposeBaseFilePath>
    <AdditionalComposeFilePaths>AdditionalComposeFiles\myadditionalcompose.yml</AdditionalComposeFilePaths>
  </PropertyGroup>
  <ItemGroup>
    <None Include="DockerComposeFiles\mydockercompose.override.yml">
      <DependentUpon>DockerComposeFiles\mydockercompose.yml</DependentUpon>
    </None>
    <None Include="DockerComposeFiles\mydockercompose.yml" />
    <None Include=".dockerignore" />
  </ItemGroup>
</Project>

Le fichier mydockercompose.yml doit ressembler à ceci, avec le contexte de génération défini sur le chemin relatif du dossier de solution (dans ce cas, ..).

version: '3.4'

services:
  webapplication1:
    image: ${DOCKER_REGISTRY-}webapplication1
    build:
      context: ..
      dockerfile: WebApplication1\Dockerfile

Notes

DockerComposeBuildArguments, DockerComposeDownArguments et DockerComposeUpArguments sont des nouveautés de Visual Studio 2019 version 16.3.

Remplacement de la configuration Docker Compose de Visual Studio

En règle générale, docker-compose.override.yml est utilisé pour remplacer certains paramètres dans docker-compose.yml. En outre, Visual Studio génère des fichiers de remplacement docker-compose.vs.debug.g.yml (en mode rapide ) et docker-compose.vs.release.g.yml (en mode normal ) avec des paramètres spécifiques à l’exécution de l’application à l’intérieur de Visual Studio. Vous pouvez remplacer ces paramètres Visual Studio en plaçant un fichier nommé docker-compose.vs.debug.yml (pour le mode Fast) ou docker-compose.vs.release.yml (pour le mode Regular) dans le même répertoire que votre fichier docker-compose.yml. Cliquez avec le bouton droit sur le projet Docker Compose et sélectionnez Ouvrir le dossier dans Explorateur de fichiers, puis utilisez Ajouter>un élément existant pour ajouter le fichier à votre projet Docker Compose.

Conseil

Pour connaître les valeurs par défaut de l’un des paramètres Visual Studio, recherchez dans le répertoire de sortie intermédiaire (par exemple, obj/Docker) docker-compose.vs.debug.g.yml ou docker-compose.vs.release.g.yml. Ces fichiers sont générés par Visual Studio et ne doivent pas être modifiés.

Étiquettes de fichier Docker Compose

Dans docker-compose.vs.debug.yml ou docker-compose.vs.release.yml, vous pouvez définir des étiquettes propres au remplacement de la façon suivante :

services:
  webapplication1:
    labels:
      com.microsoft.visualstudio.debuggee.workingdirectory: "C:\\my_app_folder"

Utilisez des guillemets doubles autour des valeurs, comme dans l’exemple précédent, et utilisez la barre oblique inverse comme caractère d’échappement pour les barres obliques inverses dans les chemins.

Nom d'étiquette Description
com.microsoft.visualstudio.debuggee.program Le programme a été lancé au démarrage du débogage. Pour les applications .NET Core, ce paramètre est généralement dotnet.
com.microsoft.visualstudio.debuggee.arguments Arguments passés au programme au démarrage du débogage. Pour les applications .NET Core, ces arguments sont généralement des chemins de recherche supplémentaires pour les packages NuGet suivis du chemin de l’assembly de sortie du projet.
com.microsoft.visualstudio.debuggee.workingdirectory Répertoire utilisé comme répertoire de départ au démarrage du débogage. Ce paramètre est généralement /app pour les conteneurs Linux ou C:\app pour les conteneurs Windows.
com.microsoft.visualstudio.debuggee.killprogram Cette commande est utilisée pour arrêter le programme de l’élément débogué qui s’exécute à l’intérieur du conteneur (si nécessaire).
Nom d'étiquette Description
com.microsoft.visualstudio.debuggee.program Le programme a été lancé au démarrage du débogage. Pour les applications .NET Core, ce paramètre est généralement dotnet.
com.microsoft.visualstudio.debuggee.arguments Arguments passés au programme au démarrage du débogage. Pour les applications .NET Core, ces arguments sont généralement des chemins de recherche supplémentaires pour les packages NuGet suivis du chemin de l’assembly de sortie du projet.
com.microsoft.visualstudio.debuggee.workingdirectory Répertoire utilisé comme répertoire de départ au démarrage du débogage. Ce paramètre est généralement /app pour les conteneurs Linux ou C:\app pour les conteneurs Windows.
com.microsoft.visualstudio.debuggee.killprogram Cette commande est utilisée pour arrêter le programme de l’élément débogué qui s’exécute à l’intérieur du conteneur (si nécessaire).
com.microsoft.visualstudio.debuggee.noattach.program Programme lancé quand vous utilisez Démarrer sans débogage (Ctrl+F5) dans un projet Azure Functions qui s’exécute dans un processus isolé. En règle générale, F5 et Ctrl+F5 utilisent le même programme, mais si un type de projet comme Azure Functions dans un processus isolé nécessite un programme différent de F5, celui-ci est utilisé.
com.microsoft.visualstudio.debuggee.noattach.arguments Arguments passés au programme quand vous utilisez Démarrer sans débogage (Ctrl+F5) dans un projet Azure Functions qui s’exécute dans un processus isolé.

Personnaliser le processus de génération Docker

Vous pouvez déclarer la phase à générer dans votre fichier Dockerfile en utilisant le paramètre target de la propriété build. Ce remplacement peut être utilisé uniquement dans docker-compose.vs.debug.yml ou docker-compose.vs.release.yml

services:
  webapplication1:
    build:
      target: customStage
    labels:
      ...

Personnaliser le processus de démarrage d’application

Vous pouvez exécuter une commande ou un script personnalisé avant de lancer votre application en utilisant le paramètre entrypoint et en le faisant dépendre de DockerDevelopmentMode. Par exemple, si vous devez configurer un certificat uniquement en mode Fast en exécutant update-ca-certificates, et pas en mode Regular, vous pouvez ajouter le code suivant uniquement dans docker-compose.vs.debug.yml :

services:
  webapplication1:
    entrypoint: "sh -c 'update-ca-certificates && tail -f /dev/null'"
    labels:
      ...

É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 génération des outils de conteneur

Paramètres de lancement des outils de conteneur

Gérer les profils de lancement pour Docker Compose dans Visual Studio

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