Docker Compose-Buildeigenschaften
Zusätzlich zu den Eigenschaften, die einzelne Docker-Projekte steuern, die in Containertools-Buildeigenschaftenbeschrieben werden, können Sie auch anpassen, wie Visual Studio Ihre Docker Compose-Projekte erstellt, indem Sie die Docker Compose-Eigenschaften festlegen, die MSBuild zum Erstellen Ihrer Lösung verwendet. Sie können auch steuern, wie der Visual Studio-Debugger Ihre Docker Compose-Apps ausführt, indem Sie Dateibezeichnungen in Docker Compose-Konfigurationsdateien festlegen.
Festlegen der MSBuild-Eigenschaften
Um den Wert einer Eigenschaft festzulegen, bearbeiten Sie die Projektdatei. Bei Docker Compose-Eigenschaften ist diese Projektdatei die Datei mit einer .dcproj
Erweiterung, sofern nicht anders in der Tabelle im nächsten Abschnitt angegeben. Angenommen, Sie möchten angeben, dass der Browser beim Starten des Debuggings gestartet wird. Sie können die DockerLaunchAction
-Eigenschaft in der .dcproj
Projektdatei wie folgt festlegen.
<PropertyGroup>
<DockerLaunchAction>LaunchBrowser</DockerLaunchAction>
</PropertyGroup>
Sie können die Eigenschaftseinstellung zu einem vorhandenen PropertyGroup
-Element hinzufügen, oder wenn es kein Element gibt, ein neues PropertyGroup
-Element erstellen.
Docker Compose MSBuild-Eigenschaften
In der folgenden Tabelle sind die MSBuild-Eigenschaften aufgeführt, die für Docker Compose-Projekte (.dcproj
Dateien) verfügbar sind.
Eigenschaftenname | Beschreibung |
---|---|
AdditionalComposeFilePaths | Gibt zusätzliche Verfassendateien in einer durch Semikolons getrennten Liste an, die für alle Befehle an docker-compose.exe gesendet werden sollen. Relative Pfade aus der Docker Compose-Projektdatei (dcproj) sind zulässig. |
DependencyAwareStart | Ermöglicht das Starten der App, die die Docker Compose-Eigenschaften depends_on und healthcheck unterstützt, die die Startreihenfolge und Integritätsprüfungen des Diensts steuern.Erfordert Visual Studio 17.13 oder höher. Standardwert: False |
DockerComposeBaseFilePath | Gibt den ersten Teil der Dateinamen der Docker Compose-Dateien ohne die .yml Erweiterung an. Zum Beispiel: 1. DockerComposeBaseFilePath = null/undefined: Verwenden Sie den Basisdateipfad docker-compose , und Dateien werden docker-compose.yml und docker-compose.override.ymlbenannt.2. DockerComposeBaseFilePath = mydockercompose: Dateien werden mydockercompose.yml und mydockercompose.override.ymlbenannt. 3. DockerComposeBaseFilePath = .. \mydockercompose: Dateien werden eine Ebene nach oben sein. Standardwert: docker-compose |
DockerComposeBuildArguments | Gibt die zusätzlichen Parameter an, die an den docker-compose build -Befehl übergeben werden sollen. Beispiel: --parallel --pull . |
DockerComposeDownArguments | Gibt die zusätzlichen Parameter an, die an den docker-compose down -Befehl übergeben werden sollen. Beispiel: --timeout 500 . |
DockerComposeEnvFilePath | Der relative Pfad zu einer env-Datei, die über docker compose an --env-file Befehle übergeben wird. Siehe Verwenden des env_file Attributs.Standardwert: Leer |
DockerComposeProjectName | Wenn angegeben, überschreibt der Projektname für ein Docker Compose-Projekt. Standardwert: "dockercompose" + automatisch generierter Hash |
DockerComposeProjectsToIgnore | Gibt Projekte an, die während des Debugvorgangs von Docker Compose-Tools ignoriert werden sollen. Diese Eigenschaft kann für jedes Projekt verwendet werden. Dateipfade können auf zwei Arten angegeben werden: 1. Relativ zu dcproj. Beispiel: <DockerComposeProjectsToIgnore> path\to\AngularProject1.csproj </DockerComposeProjectsToIgnore> . 2. Absolute Pfade. Hinweis: Die Pfade sollten durch das Trennzeichen ; getrennt werden. |
DockerComposeUpArguments | Gibt die zusätzlichen Parameter an, die an den docker-compose up -Befehl übergeben werden sollen. Beispiel: --timeout 500 . |
DockerDevelopmentMode | Steuert, ob das Benutzerprojekt im Container integriert ist. Die zulässigen Werte von Fast oder Regular Control welche Stufen in einer Dockerfile-Datei erstellt werden. Die Debugkonfiguration ist standardmäßig der schnelle Modus und andernfalls der reguläre Modus. Standardwert: Schnell |
DockerLaunchAction | Gibt die Startaktion an, die für F5 oder STRG+F5 ausgeführt werden soll. Zulässige Werte sind None, LaunchBrowser und LaunchWCFTestClient. Standardwert: Keine |
DockerLaunchBrowser | Gibt an, ob der Browser gestartet werden soll. Wird ignoriert, wenn DockerLaunchAction angegeben ist. Standardwert: False |
DockerServiceName | Wenn DockerLaunchAction oder DockerLaunchBrowser angegeben sind, gibt DockerServiceName an, auf welchen Dienst in der docker-compose Datei verwiesen wird. |
DockerServiceUrl | Die URL, die beim Starten des Browsers verwendet werden soll. Gültige Ersatztoken sind "{ServiceIPAddress}", "{ServicePort}" und "{Scheme}". Beispiel: {Scheme}://{ServiceIPAddress}:{ServicePort} |
DockerTargetOS | Das Zielbetriebssystem, das beim Erstellen des Docker-Images verwendet wird. |
Darüber hinaus gibt die Eigenschaft, die in einer DockerComposeProjectPath
- oder .csproj
Projektdatei .vbproj
, den relativen Pfad zur Docker Compose-Projektdatei (.dcproj
) an. Legen Sie diese Eigenschaft fest, wenn Sie das Dienstprojekt veröffentlichen, um die zugehörigen Bildbuildeinstellungen zu finden, die in der docker-compose.yml Datei gespeichert sind.
Beispiel
Wenn Sie den Speicherort der docker-compose
Dateien ändern, indem Sie DockerComposeBaseFilePath
auf einen relativen Pfad festlegen, müssen Sie auch sicherstellen, dass der Buildkontext geändert wird, damit er auf den Lösungsordner verweist. Wenn Ihre docker-compose
-Datei beispielsweise ein Ordner mit dem Namen DockerComposeFilesist, sollte die Docker Compose-Datei den Buildkontext auf "." oder "." festlegen. /..", je nachdem, wo es sich relativ zum Lösungsordner befindet.
<?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>
Die mydockercompose.yml Datei sollte wie folgt aussehen, wobei der Buildkontext auf den relativen Pfad des Lösungsordners festgelegt ist (in diesem Fall ..
).
version: '3.4'
services:
webapplication1:
image: ${DOCKER_REGISTRY-}webapplication1
build:
context: ..
dockerfile: WebApplication1\Dockerfile
Anmerkung
DockerComposeBuildArguments, DockerComposeDownArguments und DockerComposeUpArguments sind neu in Visual Studio 2019, Version 16.3.
Überschreiben der Docker Compose-Konfiguration von Visual Studio
In der Regel wird docker-compose.override.yml verwendet, um bestimmte Einstellungen in docker-compose.ymlaußer Kraft zu setzen. Darüber hinaus generiert Visual Studio Dateien docker-compose.vs.debug.g.yml (für Fast--Modus) und docker-compose.vs.release.g.yml (für Reguläre Modus)-Dateien mit Einstellungen, die für die Ausführung der Anwendung in Visual Studio spezifisch sind. Sie können diese Visual Studio-Einstellungen außer Kraft setzen, indem Sie eine Datei mit dem Namen docker-compose.vs.debug.yml (für Fast--Modus) oder docker-compose.vs.release.yml (für regulären-Modus) im selben Verzeichnis wie Ihre docker-compose.yml-Datei platzieren. Klicken Sie mit der rechten Maustaste auf das Docker Verfassen-Projekt, und wählen Sie Ordner im Datei-Explorer öffnen aus, und verwenden Sie dann ">Vorhandenes Element hinzufügen", um die Datei ihrem Docker Compose-Projekt hinzuzufügen.
Trinkgeld
Um die Standardwerte für eine der Visual Studio-Einstellungen zu ermitteln, suchen Sie im Zwischenausgabeverzeichnis (z. B. obj/Docker) nach docker-compose.vs.debug.g.yml oder docker-compose.vs.release.g.yml. Diese Dateien werden von Visual Studio generiert und sollten nicht geändert werden.
Docker Compose-Dateibezeichnungen
In docker-compose.vs.debug.yml oder docker-compose.vs.release.ymlkönnen Sie überschreibende Bezeichnungen wie folgt definieren:
services:
webapplication1:
labels:
com.microsoft.visualstudio.debuggee.workingdirectory: "C:\\my_app_folder"
Verwenden Sie doppelte Anführungszeichen um die Werte, wie im vorherigen Beispiel, und verwenden Sie den umgekehrten Schrägstrich als Escapezeichen für umgekehrte Schrägstriche in Pfaden.
Kennsatzname | Beschreibung |
---|---|
com.microsoft.visualstudio.debuggee.program | Das Programm wurde beim Starten des Debuggings gestartet. Bei .NET Core-Apps wird diese Einstellung in der Regel dotnet-. |
com.microsoft.visualstudio.debuggee.arguments | Die Argumente, die beim Starten des Debuggings an das Programm übergeben werden. Bei .NET Core-Apps sind diese Argumente in der Regel zusätzliche Suchpfade für NuGet-Pakete gefolgt vom Pfad zur Ausgabeassembly des Projekts. |
com.microsoft.visualstudio.debuggee.workingdirectory | Das Verzeichnis, das beim Starten des Debuggings als Startverzeichnis verwendet wird. Diese Einstellung ist in der Regel /app- für Linux-Container oder C:\app- für Windows-Container. |
com.microsoft.visualstudio.debuggee.killprogram | Dieser Befehl wird verwendet, um das Debuggee-Programm zu beenden, das innerhalb des Containers ausgeführt wird (falls erforderlich). |
Kennsatzname | Beschreibung |
---|---|
com.microsoft.visualstudio.debuggee.program | Das Programm wurde beim Starten des Debuggings gestartet. Bei .NET Core-Apps wird diese Einstellung in der Regel dotnet-. |
com.microsoft.visualstudio.debuggee.arguments | Die Argumente, die beim Starten des Debuggings an das Programm übergeben werden. Bei .NET Core-Apps sind diese Argumente in der Regel zusätzliche Suchpfade für NuGet-Pakete gefolgt vom Pfad zur Ausgabeassembly des Projekts. |
com.microsoft.visualstudio.debuggee.workingdirectory | Das Verzeichnis, das beim Starten des Debuggings als Startverzeichnis verwendet wird. Diese Einstellung ist in der Regel /app- für Linux-Container oder C:\app- für Windows-Container. |
com.microsoft.visualstudio.debuggee.killprogram | Dieser Befehl wird verwendet, um das Debuggee-Programm zu beenden, das innerhalb des Containers ausgeführt wird (falls erforderlich). |
com.microsoft.visualstudio.debuggee.noattach.program | Das Programm wurde gestartet, wenn Sie Start ohne Debuggen (STRG+F5) in einem Azure-Funktionsprojekt verwenden, das in einem isolierten Prozessausgeführt wird. In der Regel werden sowohl F5 als auch STRG+F 5 verwendet dasselbe Programm, aber wenn ein Projekttyp wie Azure Functions in einem isolierten Prozess ein anderes Programm als F5-erfordert, wird dies verwendet. |
com.microsoft.visualstudio.debuggee.noattach.arguments | Die Argumente, die an das Programm übergeben werden, wenn Sie Start ohne Debugging verwenden, (STRG+F5) in einem Azure-Funktionsprojekt, das in einem isolierten Prozess ausgeführt wird. |
com.microsoft.visual-studio.project-name | Der Name des Projekts, mit dem Visual Studio das Projekt finden kann, wenn sich das Projekt nicht im gleichen Ordner wie die Dockerfile befindet. |
Anpassen des Docker-Buildprozesses
Sie können deklarieren, welche Phase in Ihrer Dockerfile erstellt werden soll, indem Sie die einstellung target
in der eigenschaft build
verwenden. Diese Außerkraftsetzung kann nur in der docker-compose.vs.debug.yml oder docker-compose.vs.release.yml verwendet werden.
services:
webapplication1:
build:
target: customStage
labels:
...
Anpassen des App-Startvorgangs
Sie können einen Befehl oder ein benutzerdefiniertes Skript ausführen, bevor Sie Ihre App starten, indem Sie die Einstellung entrypoint
verwenden und sie abhängig von der DockerDevelopmentMode
machen. Wenn Sie z. B. ein Zertifikat nur im Fast--Modus einrichten müssen, indem Sie update-ca-certificates
ausführen, aber nicht im Modus "Reguläre", können Sie den folgenden Code in nurdocker-compose.vs.debug.ymlhinzufügen:
services:
webapplication1:
entrypoint: "sh -c 'update-ca-certificates && tail -f /dev/null'"
labels:
...
Weitere Informationen finden Sie unter Containereinstiegspunkt
Nächste Schritte
Informationen zu MSBuild-Eigenschaften im Allgemeinen finden Sie unter MSBuild Properties.
Siehe auch
Containertools-Buildeigenschaften
Starteinstellungen für Containertools
Verwalten von Startprofilen für Docker Compose in Visual Studio