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-compose en 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-certificates
uit 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