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 avec une .dcproj
extension, 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 DockerLaunchAction
propriété dans le .dcproj
fichier projet 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 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-compose du 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 passé à docker compose des commandes via --env-file . Consultez Utiliser l’attribut env_file. |
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 | Le programme lancé lorsque 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 lorsque vous utilisez Démarrer sans débogage (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 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 Rapide en exécutantupdate-ca-certificates
, mais pas en mode Normal, 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:
...
Pour plus d’informations, consultez le 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 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