Partage via


Propriétés de build Docker Compose

En plus des propriétés qui contrôlent des projets Docker individuels, décrites dans propriétés de build Container Tools, 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 fichiers 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 avec une extension .dcproj, sauf indication contraire dans le tableau de la section suivante. Par exemple, supposons que vous souhaitez spécifier pour lancer le navigateur lorsque vous démarrez le débogage. Vous pouvez définir la propriété DockerLaunchAction dans le fichier projet .dcproj comme suit.

<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 nouvel élément PropertyGroup.

Propriétés MSBuild Docker Compose

Le tableau suivant présente les propriétés MSBuild disponibles pour les projets Docker Compose (fichiers.dcproj).

Nom de la propriété Description
AdditionalComposeFilePaths Spécifie des fichiers de composition 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.
DependencyAwareStart Permet un autre moyen de lancer l’application qui prend en charge les propriétés Docker Compose depends_on et healthcheck, qui contrôlent l’ordre de démarrage du service et les vérifications d’intégrité.

Nécessite Visual Studio 17.13 ou version ultérieure.

Valeur par défaut : False
DockerComposeBaseFilePath 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 d’accès du fichier de base docker-compose, et les fichiers seront nommés docker-compose.yml et docker-compose.override.yml.
2. DockerComposeBaseFilePath = mydockercompose: les fichiers seront nommés mydockercompose.yml et mydockercompose.override.yml.
3. DockerComposeBaseFilePath = .. \mydockercompose: les fichiers seront à un niveau supérieur.

Valeur par défaut : docker-compose
DockerComposeBuildArguments Spécifie les paramètres supplémentaires à passer à la commande docker-compose build. Par exemple, --parallel --pull.
DockerComposeDownArguments Spécifie les paramètres supplémentaires à passer à la commande docker-compose down. Par exemple, --timeout 500.
DockerComposeEnvFilePath Chemin relatif d’un fichier .env passé à docker compose commandes via --env-file. Consultez Utiliser l’attribut env_file.

Valeur par défaut : Vide
DockerComposeProjectName Si elle est spécifiée, remplace le nom du projet pour un projet Docker Compose.

Valeur par défaut : « dockercompose » + hachage généré automatiquement
DockerComposeProjectsToIgnore 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 d’accès aux fichiers peuvent être spécifiés de deux façons :
1. Relative à dcproj. Par exemple, <DockerComposeProjectsToIgnore> path\to\AngularProject1.csproj </DockerComposeProjectsToIgnore>.
2. Chemins absolus.
Remarque: les chemins d’accès doivent être séparés par le caractère délimiteur ;.
DockerComposeUpArguments Spécifie les paramètres supplémentaires à passer à la commande docker-compose up. Par exemple, --timeout 500.
DockerDevelopmentMode Contrôle si le projet utilisateur est intégré au conteneur. Les valeurs autorisées de rapide ou contrôle de standard les étapes qui sont générées dans un fichier Dockerfile. La configuration de débogage est en mode Rapide par défaut et en mode Normal dans le cas contraire.

Valeur par défaut : Rapide
DockerLaunchAction Spécifie l’action de lancement à effectuer sur F5 ou Ctrl+F5. Les valeurs autorisées sont None, LaunchBrowser et LaunchWCFTestClient.

Valeur par défaut : None
DockerLaunchBrowser Indique s’il faut lancer le navigateur. Ignoré si DockerLaunchAction est spécifié.

Valeur par défaut : False
DockerServiceName Si DockerLaunchAction ou DockerLaunchBrowser sont spécifiés, DockerServiceName spécifie le service référencé dans le fichier docker-compose est lancé.
DockerServiceUrl URL à utiliser lors du lancement du navigateur. Les jetons de remplacement valides sont « {ServiceIPAddress} », « {ServicePort} » et « {Scheme} ». Par exemple : {Scheme} ://{ServiceIPAddress} :{ServicePort}
DockerTargetOS Système d’exploitation cible utilisé lors de la génération de l’image Docker.

En outre, la propriété DockerComposeProjectPath dans un fichier projet .csproj ou .vbproj spécifie le chemin relatif du fichier projet Docker Compose (.dcproj). Définissez cette propriété lors de la publication du projet de service pour rechercher les paramètres de génération d’image associés stockés dans le fichier docker-compose.yml.

Exemple

Si vous modifiez l’emplacement des fichiers docker-compose, en définissant DockerComposeBaseFilePath sur un chemin relatif, vous devez également vous assurer que le contexte de build est modifié afin qu’il référence le dossier de la solution. Par exemple, si votre fichier docker-compose 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 d’accès relatif du dossier de solution (dans ce cas, ..).

version: '3.4'

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

Note

DockerComposeBuildArguments, DockerComposeDownArguments et DockerComposeUpArguments sont nouveaux dans Visual Studio 2019 version 16.3.

Substitution 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 (pour mode rapide) et docker-compose.vs.release.g.yml (pour mode de standard) avec des paramètres spécifiques à l’exécution de l’application dans Visual Studio. Vous pouvez remplacer ces paramètres Visual Studio en plaçant un fichier nommé docker-compose.vs.debug.yml (pour mode rapide) ou docker-compose.vs.release.yml (pour mode de standard) 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 l’Explorateur de fichiers, puis utilisez Ajouter>élément existant pour ajouter le fichier à votre projet Docker Compose.

Pourboire

Pour connaître les valeurs par défaut de l’un des paramètres Visual Studio, recherchez docker-compose.vs.debug.g.yml ou docker-compose.vs.release.g.ymldans le répertoire de sortie intermédiaire (par exemple, obj/Docker). 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 spécifiques aux substitutions comme suit :

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 d’accès.

Nom de l’étiquette Description
com.microsoft.visualstudio.debuggee.program Le programme a été lancé lors du 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 lors du 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 d’accès à l’assembly de sortie du projet.
com.microsoft.visualstudio.debuggee.workingdirectory Répertoire utilisé comme répertoire de démarrage lors du 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 débogage qui s’exécute à l’intérieur du conteneur (le cas échéant).
Nom de l’étiquette Description
com.microsoft.visualstudio.debuggee.program Le programme a été lancé lors du 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 lors du 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 d’accès à l’assembly de sortie du projet.
com.microsoft.visualstudio.debuggee.workingdirectory Répertoire utilisé comme répertoire de démarrage lors du 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 débogage qui s’exécute à l’intérieur du conteneur (le cas échéant).
com.microsoft.visualstudio.debuggee.noattach.program Le programme lancé lorsque vous utilisez Démarrer sans déboguer (Ctrl+F5) dans un projet Azure Functions qui s’exécute dans un processus isolé . En règle générale, F5 et Ctrl+F 5 utilise 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, cela sera utilisé.
com.microsoft.visualstudio.debuggee.noattach.arguments Arguments passés au programme lorsque vous utilisez Démarrer sans déboguer (Ctrl+F5) dans un projet Azure Functions qui s’exécute dans un processus isolé.
com.microsoft.visual-studio.project-name Nom du projet, qui aide Visual Studio à trouver le projet si le projet ne se trouve pas dans le même dossier que le fichier Dockerfile.

Personnaliser le processus de génération Docker

Vous pouvez déclarer l’étape à générer dans votre fichier Dockerfile à l’aide du paramètre target dans la propriété build. Cette substitution peut être utilisée uniquement dans les docker-compose.vs.debug.yml ou les docker-compose.vs.release.yml

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

Personnaliser le processus de démarrage de l’application

Vous pouvez exécuter une commande ou un script personnalisé avant de lancer votre application à l’aide du paramètre entrypoint et de le rendre dépendant du DockerDevelopmentMode. Par exemple, si vous devez configurer un certificat uniquement en mode rapide en exécutant update-ca-certificates, mais pas en mode standard, vous pouvez ajouter le code suivant dans uniquementdocker-compose.vs.debug.yml:

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

Pour plus d’informations, consultez point d’entrée de conteneur

É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 Container Tools

paramètres de lancement Container Tools

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

propriétés réservées msBuild et connues