Dela via


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-composeoch 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

Hantera startprofiler för Docker Compose i Visual Studio

reserverade och välkända egenskaper för MSBuild