Freigeben über


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 healthcheckunterstü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 composean --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 DockerDevelopmentModemachen. Wenn Sie z. B. ein Zertifikat nur im Fast--Modus einrichten müssen, indem Sie update-ca-certificatesausfü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

reservierte und bekannte Eigenschaften