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). |
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