Egenskaper för Docker Compose-kompilering
Förutom de egenskaper som styr enskilda Docker-projekt, som beskrivs i Container Tools-byggegenskaper, kan du också anpassa hur Visual Studio skapar dina Docker Compose-projekt genom att ange de Docker Compose-egenskaper som MSBuild använder för att skapa din lösning. Du kan också styra hur Visual Studio-felsökningsprogrammet kör dina Docker Compose-appar genom att ange filetiketter i Docker Compose-konfigurationsfiler.
Så här ställer du in MSBuild-egenskaperna
Om du vill ange värdet för en egenskap redigerar du projektfilen. För Docker Compose-egenskaper är den här projektfilen den med ett .dcproj
-tillägg, om inget annat anges i tabellen i nästa avsnitt. Anta till exempel att du vill ange att webbläsaren ska startas när du börjar felsöka. Du kan ange egenskapen DockerLaunchAction
i .dcproj
-projektfilen på följande sätt.
<PropertyGroup>
<DockerLaunchAction>LaunchBrowser</DockerLaunchAction>
</PropertyGroup>
Du kan lägga till egenskapsinställningen i ett befintligt PropertyGroup
-element eller, om det inte finns något, skapa ett nytt PropertyGroup
element.
Egenskaper för Docker Compose MSBuild
I följande tabell visas de MSBuild-egenskaper som är tillgängliga för Docker Compose-projekt (.dcproj
-filer).
Egenskapsnamn | Beskrivning |
---|---|
AdditionalComposeFilePaths | Anger ytterligare skrivfiler i en semikolonavgränsad lista som ska skickas ut till docker-compose.exe för alla kommandon. Relativa sökvägar från Docker Compose-projektfilen (dcproj) tillåts. |
DependencyAwareStart | Aktiverar ett annat sätt att starta appen som stöder Docker Compose-egenskaperna depends_on och healthcheck , som styr tjänstens startordning och hälsokontroller.Kräver Visual Studio 17.13 eller senare. Standardvärde: False |
DockerComposeBaseFilePath | Anger den första delen av filnamnen för Docker Compose-filerna, utan .yml -tillägget. Till exempel: 1. DockerComposeBaseFilePath = null/undefined: använd basfilsökvägen docker-compose och filerna får namnet docker-compose.yml och docker-compose.override.yml.2. DockerComposeBaseFilePath = mydockercompose: filer får namnet mydockercompose.yml och mydockercompose.override.yml. 3. DockerComposeBaseFilePath = .. \mydockercompose: filerna kommer att vara upp en nivå. Standardvärde: docker-compose |
DockerComposeBuildArguments | Anger de extra parametrar som ska skickas till kommandot docker-compose build . Till exempel --parallel --pull . |
DockerComposeDownArguments | Anger de extra parametrar som ska skickas till kommandot docker-compose down . Till exempel --timeout 500 . |
DockerComposeEnvFilePath | Den relativa sökvägen till en .env-fil som skickas till docker compose -kommandon via --env-file . Se Använd attributet env_file.Standardvärde: Tom |
DockerComposeProjectName | Om det anges åsidosätter du projektnamnet för ett Docker Compose-projekt. Standardvärde: "dockercompose" + automatiskt genererad hash |
DockerComposeProjectsToIgnore | Anger projekt som ska ignoreras av Docker Compose-verktyg under felsökningen. Den här egenskapen kan användas för valfritt projekt. Filsökvägar kan anges på något av två sätt: 1. I förhållande till dcproj. Till exempel <DockerComposeProjectsToIgnore> path\to\AngularProject1.csproj </DockerComposeProjectsToIgnore> . 2. Absoluta sökvägar. Obs: Sökvägarna ska avgränsas med avgränsartecknet ; . |
DockerComposeUpArguments | Anger de extra parametrar som ska skickas till kommandot docker-compose up . Till exempel --timeout 500 . |
DockerDevelopmentMode | Styr om användarprojektet är inbyggt i containern. De tillåtna värdena för Fast eller Regular styr vilka steg som skapas i en Dockerfile. Felsökningskonfigurationen är snabbt läge som standard och normalt läge annars. Standardvärde: Snabb |
DockerLaunchAction | Anger den startåtgärd som ska utföras på F5 eller Ctrl+F5. Tillåtna värden är None, LaunchBrowser och LaunchWCFTestClient. Standardvärde: Ingen |
DockerLaunchBrowser | Anger om webbläsaren ska startas. Ignorerade om DockerLaunchAction har angetts. Standardvärde: False |
DockerServiceName | Om DockerLaunchAction eller DockerLaunchBrowser anges anger DockerServiceName vilken tjänst som refereras i docker-compose filen startas. |
DockerServiceUrl | Url:en som ska användas när webbläsaren startas. Giltiga ersättningstoken är {ServiceIPAddress}, {ServicePort} och {Scheme}. Exempel: {Scheme}://{ServiceIPAddress}:{ServicePort} |
DockerTargetOS | Måloperativsystemet som används när du skapar Docker-avbildningen. |
Dessutom anger egenskapen DockerComposeProjectPath
i en .csproj
- eller .vbproj
-projektfil den relativa sökvägen till Docker Compose-projektet (.dcproj
) filen. Ange den här egenskapen när du publicerar tjänstprojektet för att hitta de associerade avbildningsversionsinställningarna som lagras i filen docker-compose.yml.
Exempel
Om du ändrar platsen för docker-compose
filer genom att ange DockerComposeBaseFilePath
till en relativ sökväg måste du också se till att byggkontexten ändras så att den refererar till lösningsmappen. Om din docker-compose
-fil till exempel är en mapp med namnet DockerComposeFilesska Docker Compose-filen ange byggkontexten till ".." eller ".. /..", beroende på var den är relativ till lösningsmappen.
<?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>
Den mydockercompose.yml filen bör se ut så här, med byggkontexten inställd på den relativa sökvägen för lösningsmappen (i det här fallet ..
).
version: '3.4'
services:
webapplication1:
image: ${DOCKER_REGISTRY-}webapplication1
build:
context: ..
dockerfile: WebApplication1\Dockerfile
Not
DockerComposeBuildArguments, DockerComposeDownArguments och DockerComposeUpArguments är nya i Visual Studio 2019 version 16.3.
Åsidosätta Visual Studios Docker Compose-konfiguration
Vanligtvis används docker-compose.override.yml för att åsidosätta vissa inställningar i docker-compose.yml. Visual Studio genererar dessutom åsidosättningsfiler docker-compose.vs.debug.g.yml (för snabbt-läge) och docker-compose.vs.release.g.yml filer (för regelbundet läge) med inställningar som är specifika för att köra programmet i Visual Studio. Du kan åsidosätta dessa Visual Studio-inställningar genom att placera en fil med namnet docker-compose.vs.debug.yml (för läget Snabb) eller docker-compose.vs.release.yml (för normal läge) i samma katalog som din docker-compose.yml fil. Högerklicka på Docker Compose-projektet och välj Öppna mapp i Utforskaren och använd sedan Lägg till>befintligt objekt för att lägga till filen i Docker Compose-projektet.
Dricks
Om du vill ta reda på standardvärdena för någon av Visual Studio-inställningarna tittar du i katalogen för mellanliggande utdata (till exempel obj/Docker) för docker-compose.vs.debug.g.yml eller docker-compose.vs.release.g.yml. Dessa filer genereras av Visual Studio och bör inte ändras.
Docker Compose-filetiketter
I docker-compose.vs.debug.yml eller docker-compose.vs.release.ymlkan du definiera åsidosättningsspecifika etiketter på följande sätt:
services:
webapplication1:
labels:
com.microsoft.visualstudio.debuggee.workingdirectory: "C:\\my_app_folder"
Använd dubbla citattecken runt värdena, som i föregående exempel, och använd omvänt snedstreck som ett escape-tecken för omvänt snedstreck i sökvägar.
Etikettnamn | Beskrivning |
---|---|
com.microsoft.visualstudio.debuggee.program | Programmet startades när felsökningen startades. För .NET Core-appar är den här inställningen vanligtvis dotnet-. |
com.microsoft.visualstudio.debuggee.arguments | Argumenten som skickades till programmet när felsökningen startades. För .NET Core-appar är dessa argument vanligtvis ytterligare sökvägar för NuGet-paket följt av sökvägen till projektets utdatasammansättning. |
com.microsoft.visualstudio.debuggee.workingdirectory | Katalogen som används som startkatalog när felsökning startas. Den här inställningen är vanligtvis /app för Linux-containrar eller C:\app för Windows-containrar. |
com.microsoft.visualstudio.debuggee.killprogram | Det här kommandot används för att stoppa felsökningsprogrammet som körs i containern (vid behov). |
Etikettnamn | Beskrivning |
---|---|
com.microsoft.visualstudio.debuggee.program | Programmet startades när felsökningen startades. För .NET Core-appar är den här inställningen vanligtvis dotnet-. |
com.microsoft.visualstudio.debuggee.arguments | Argumenten som skickades till programmet när felsökningen startades. För .NET Core-appar är dessa argument vanligtvis ytterligare sökvägar för NuGet-paket följt av sökvägen till projektets utdatasammansättning. |
com.microsoft.visualstudio.debuggee.workingdirectory | Katalogen som används som startkatalog när felsökning startas. Den här inställningen är vanligtvis /app för Linux-containrar eller C:\app för Windows-containrar. |
com.microsoft.visualstudio.debuggee.killprogram | Det här kommandot används för att stoppa felsökningsprogrammet som körs i containern (vid behov). |
com.microsoft.visualstudio.debuggee.noattach.program | Programmet startades när du använder Start utan att felsöka (Ctrl+F5) i ett Azure Functions-projekt som körs i en isolerad process. Normalt använder både F5 och Ctrl+F5 samma program, men om någon projekttyp som Azure Functions i en isolerad process kräver ett annat program än F5, används detta. |
com.microsoft.visualstudio.debuggee.noattach.arguments | Argumenten som skickas till programmet när du använder Starta utan att felsöka (Ctrl+F5) i ett Azure Functions-projekt som körs i en isolerad process. |
com.microsoft.visual-studio.project-name | Namnet på projektet, som hjälper Visual Studio att hitta projektet om projektet inte finns i samma mapp som Dockerfile. |
Anpassa Docker-byggprocessen
Du kan deklarera vilken fas som ska skapas i Dockerfile med hjälp av inställningen target
i egenskapen build
. Den här åsidosättningen kan endast användas i docker-compose.vs.debug.yml eller docker-compose.vs.release.yml
services:
webapplication1:
build:
target: customStage
labels:
...
Anpassa appstartprocessen
Du kan köra ett kommando eller ett anpassat skript innan du startar appen med hjälp av inställningen entrypoint
och göra den beroende av DockerDevelopmentMode
. Om du till exempel bara behöver konfigurera ett certifikat i läge för snabb genom att köra update-ca-certificates
, men inte i läge för normal, kan du lägga till följande kod i endastdocker-compose.vs.debug.yml:
services:
webapplication1:
entrypoint: "sh -c 'update-ca-certificates && tail -f /dev/null'"
labels:
...
Mer information finns i containerinmatningspunkt
Nästa steg
Mer information om MSBuild-egenskaper finns i MSBuild Properties.
Se även
Container Tools-byggegenskaper
Startinställningar för containerverktyg