Delen via


Build-eigenschappen van Docker Compose

Naast de eigenschappen waarmee afzonderlijke Docker-projecten worden beheerd, die worden beschreven in Container Tools-buildeigenschappen, kunt u ook aanpassen hoe Visual Studio uw Docker Compose-projecten bouwt door de Docker Compose-eigenschappen in te stellen die MSBuild gebruikt om uw oplossing te bouwen. U kunt ook bepalen hoe het Visual Studio-foutopsporingsprogramma uw Docker Compose-apps uitvoert door bestandslabels in te stellen in Docker Compose-configuratiebestanden.

De MSBuild-eigenschappen instellen

Als u de waarde van een eigenschap wilt instellen, bewerkt u het projectbestand. Voor Docker Compose-eigenschappen is dit projectbestand het bestand met een .dcproj extensie, tenzij anders wordt aangegeven in de tabel in de volgende sectie. Stel dat u de browser wilt starten wanneer u foutopsporing start. U kunt de eigenschap DockerLaunchAction als volgt instellen in het .dcproj projectbestand.

<PropertyGroup>
   <DockerLaunchAction>LaunchBrowser</DockerLaunchAction>
</PropertyGroup>

U kunt de eigenschapsinstelling toevoegen aan een bestaand PropertyGroup-element, of als er geen element is, maakt u een nieuw PropertyGroup element.

Eigenschappen van Docker Compose MSBuild

In de volgende tabel ziet u de MSBuild-eigenschappen die beschikbaar zijn voor Docker Compose-projecten (.dcproj bestanden).

Naam van eigenschap Beschrijving
AdditionalComposeFilePaths Hiermee geeft u extra opstelbestanden in een door puntkomma's gescheiden lijst die naar docker-compose.exe moet worden verzonden voor alle opdrachten. Relatieve paden uit het Docker Compose-projectbestand (dcproj) zijn toegestaan.
DependencyAwareStart Hiermee kunt u de app op een andere manier starten die ondersteuning biedt voor de Docker Compose-eigenschappen depends_on en healthcheck, waarmee de opstartvolgorde en statuscontroles van de service worden gecontroleerd.

Hiervoor is Visual Studio 17.13 of hoger vereist.

Standaardwaarde: Onwaar
DockerComposeBaseFilePath Hiermee geeft u het eerste deel van de bestandsnamen van de Docker Compose-bestanden, zonder de .yml extensie. Bijvoorbeeld:
1. DockerComposeBaseFilePath = null/undefined: gebruik het basisbestandspad docker-composeen bestanden krijgen de naam docker-compose.yml en docker-compose.override.yml.
2. DockerComposeBaseFilePath = mydockercompose: bestanden krijgen de naam mydockercompose.yml en mydockercompose.override.yml.
3. DockerComposeBaseFilePath = .. \mydockercompose: bestanden zijn één niveau hoger.

Standaardwaarde: docker-compose
DockerComposeBuildArguments Hiermee geeft u de extra parameters die moeten worden doorgegeven aan de opdracht docker-compose build. Bijvoorbeeld --parallel --pull.
DockerComposeDownArguments Hiermee geeft u de extra parameters die moeten worden doorgegeven aan de opdracht docker-compose down. Bijvoorbeeld --timeout 500.
DockerComposeEnvFilePath Het relatieve pad naar een .env-bestand dat wordt doorgegeven aan docker compose opdrachten via --env-file. Zie Het kenmerk env_file gebruiken.

Standaardwaarde: Leeg
DockerComposeProjectName Indien opgegeven, overschrijft u de projectnaam voor een Docker Compose-project.

Standaardwaarde: 'dockercompose' + automatisch gegenereerde hash
DockerComposeProjectsToIgnore Hiermee geeft u projecten worden genegeerd door Docker Compose-hulpprogramma's tijdens foutopsporing. Deze eigenschap kan worden gebruikt voor elk project. Bestandspaden kunnen op twee manieren worden opgegeven:
1. Ten opzichte van dcproj. Bijvoorbeeld <DockerComposeProjectsToIgnore> path\to\AngularProject1.csproj </DockerComposeProjectsToIgnore>.
2. Absolute paden.
Opmerking: de paden moeten worden gescheiden door het scheidingsteken ;.
DockerComposeUpArguments Hiermee geeft u de extra parameters die moeten worden doorgegeven aan de opdracht docker-compose up. Bijvoorbeeld --timeout 500.
DockerDevelopmentMode Hiermee bepaalt u of het gebruikersproject is gebouwd in de container. De toegestane waarden van Fast of Regular bepalen welke fasen worden gemaakt in een Dockerfile. De foutopsporingsconfiguratie is standaard de snelle modus en de normale modus anders.

Standaardwaarde: Snel
DockerLaunchAction Hiermee geeft u de startactie die moet worden uitgevoerd op F5 of Ctrl+F5. Toegestane waarden zijn None, LaunchBrowser en LaunchWCFTestClient.

Standaardwaarde: Geen
DockerLaunchBrowser Geeft aan of de browser moet worden gestart. Genegeerd als DockerLaunchAction is opgegeven.

Standaardwaarde: Onwaar
DockerServiceName Als DockerLaunchAction of DockerLaunchBrowser is opgegeven, geeft DockerServiceName aan welke service in het docker-compose-bestand wordt gestart.
DockerServiceUrl De URL die moet worden gebruikt bij het starten van de browser. Geldige vervangingstokens zijn {ServiceIPAddress}, {ServicePort} en {Scheme}. Bijvoorbeeld: {Scheme}://{ServiceIPAddress}:{ServicePort}
DockerTargetOS Het doelbesturingssystem dat wordt gebruikt bij het bouwen van de Docker-installatiekopieën.

Bovendien geeft de eigenschap DockerComposeProjectPath in een .csproj of .vbproj projectbestand het relatieve pad naar het Docker Compose-project (.dcproj) bestand. Stel deze eigenschap in wanneer u het serviceproject publiceert om de bijbehorende build-instellingen voor installatiekopieën te vinden die zijn opgeslagen in het docker-compose.yml-bestand.

Voorbeeld

Als u de locatie van de docker-compose-bestanden wijzigt door DockerComposeBaseFilePath in te stellen op een relatief pad, moet u er ook voor zorgen dat de buildcontext wordt gewijzigd zodat deze verwijst naar de oplossingsmap. Als uw docker-compose bestand bijvoorbeeld een map is met de naam DockerComposeFiles, moet het Docker Compose-bestand de buildcontext instellen op .. of .. /..", afhankelijk van waar deze zich ten opzichte van de oplossingsmap bevindt.

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

Het bestand mydockercompose.yml moet er als volgt uitzien, waarbij de buildcontext is ingesteld op het relatieve pad van de oplossingsmap (in dit geval ..).

version: '3.4'

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

Notitie

DockerComposeBuildArguments, DockerComposeDownArguments en DockerComposeUpArguments zijn nieuw in Visual Studio 2019 versie 16.3.

Docker Compose-configuratie van Visual Studio overschrijven

Doorgaans wordt docker-compose.override.yml gebruikt om bepaalde instellingen in docker-compose.ymlte overschrijven. Bovendien genereert Visual Studio onderdrukkingsbestanden docker-compose.vs.debug.g.yml (voor Fast-modus) en docker-compose.vs.release.g.yml (voor regular-modus) bestanden met instellingen die specifiek zijn voor het uitvoeren van de toepassing in Visual Studio. U kunt deze Visual Studio-instellingen overschrijven door een bestand met de naam docker-compose.vs.debug.yml (voor Fast-modus) of docker-compose.vs.release.yml (voor normale modus) in dezelfde map te plaatsen als uw docker-compose.yml-bestand. Klik met de rechtermuisknop op het Docker Compose-project en selecteer Map openen in Verkenner en gebruik vervolgens >Bestaande item toevoegen om het bestand toe te voegen aan uw Docker Compose-project.

Fooi

Als u de standaardwaarden voor een van de Visual Studio-instellingen wilt achterhalen, zoekt u in de tussenliggende uitvoermap (bijvoorbeeld obj/Docker-) naar docker-compose.vs.debug.g.yml of docker-compose.vs.release.g.yml. Deze bestanden worden gegenereerd door Visual Studio en mogen niet worden gewijzigd.

Docker Compose-bestandslabels

In docker-compose.vs.debug.yml of docker-compose.vs.release.ymlkunt u als volgt onderdrukkingsspecifieke labels definiëren:

services:
  webapplication1:
    labels:
      com.microsoft.visualstudio.debuggee.workingdirectory: "C:\\my_app_folder"

Gebruik dubbele aanhalingstekens rond de waarden, zoals in het vorige voorbeeld, en gebruik de backslash als escape-teken voor backslashes in paden.

Labelnaam Beschrijving
com.microsoft.visualstudio.debuggee.program Het programma is gestart bij het starten van foutopsporing. Voor .NET Core-apps is deze instelling doorgaans dotnet-.
com.microsoft.visualstudio.debuggee.arguments De argumenten die worden doorgegeven aan het programma bij het starten van foutopsporing. Voor .NET Core-apps zijn deze argumenten doorgaans aanvullende zoekpaden voor NuGet-pakketten, gevolgd door het pad naar de uitvoerassembly van het project.
com.microsoft.visualstudio.debuggee.workingdirectory De map die wordt gebruikt als de beginmap bij het starten van foutopsporing. Deze instelling wordt doorgaans /app- voor Linux-containers of C:\app- voor Windows-containers.
com.microsoft.visualstudio.debuggee.killprogram Deze opdracht wordt gebruikt om het programma voor foutopsporing te stoppen dat in de container wordt uitgevoerd (indien nodig).
Labelnaam Beschrijving
com.microsoft.visualstudio.debuggee.program Het programma is gestart bij het starten van foutopsporing. Voor .NET Core-apps is deze instelling doorgaans dotnet-.
com.microsoft.visualstudio.debuggee.arguments De argumenten die worden doorgegeven aan het programma bij het starten van foutopsporing. Voor .NET Core-apps zijn deze argumenten doorgaans aanvullende zoekpaden voor NuGet-pakketten, gevolgd door het pad naar de uitvoerassembly van het project.
com.microsoft.visualstudio.debuggee.workingdirectory De map die wordt gebruikt als de beginmap bij het starten van foutopsporing. Deze instelling wordt doorgaans /app- voor Linux-containers of C:\app- voor Windows-containers.
com.microsoft.visualstudio.debuggee.killprogram Deze opdracht wordt gebruikt om het programma voor foutopsporing te stoppen dat in de container wordt uitgevoerd (indien nodig).
com.microsoft.visualstudio.debuggee.noattach.program Het programma dat wordt gestart wanneer u Start gebruikt zonder foutopsporing (Ctrl+F5) te gebruiken in een Azure Functions-project dat wordt uitgevoerd in een geïsoleerd proces. Normaal gesproken gebruikt zowel F5 als Ctrl+F5 hetzelfde programma, maar als een projecttype zoals Azure Functions in een geïsoleerd proces een ander programma vereist dan F5-, wordt dit gebruikt.
com.microsoft.visualstudio.debuggee.noattach.arguments De argumenten die worden doorgegeven aan het programma wanneer u Start gebruikt zonder foutopsporing (Ctrl+F5) in een Azure Functions-project dat in een geïsoleerd proces wordt uitgevoerd.
com.microsoft.visual-studio.project-name De naam van het project, waarmee Visual Studio het project kan vinden als het project zich niet in dezelfde map bevindt als het Dockerfile.

Het Docker-buildproces aanpassen

U kunt declareren welke fase u in uw Dockerfile wilt bouwen met behulp van de target-instelling in de eigenschap build. Deze onderdrukking kan alleen worden gebruikt in de docker-compose.vs.debug.yml of docker-compose.vs.release.yml

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

Het opstartproces van de app aanpassen

U kunt een opdracht of aangepast script uitvoeren voordat u de app start met behulp van de entrypoint-instelling en deze afhankelijk maken van de DockerDevelopmentMode. Als u bijvoorbeeld alleen een certificaat wilt instellen in Fast-modus door update-ca-certificatesuit te voeren, maar niet in normale modus, kunt u de volgende code toevoegen in alleendocker-compose.vs.debug.yml:

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

Zie containerinvoerpunt voor meer informatie

Volgende stappen

Zie MSBuild Propertiesvoor meer informatie over MSBuild-eigenschappen.

Zie ook

Build-eigenschappen van Container Tools

startinstellingen voor Container Tools

Startprofielen beheren voor Docker Compose in Visual Studio

gereserveerde en bekende eigenschappen van MSBuild