Buildeigenschaften von Docker Compose

Die Eigenschaften zur Verwaltung einzelner Docker-Projekte sind unter Buildeigenschaften von Containertools beschrieben. Diese Eigenschaften können Sie anpassen. Zusätzlich können Sie auch festlegen, wie Visual Studio Docker-Projekte erstellt. Dazu legen Sie die Docker Compose-Eigenschaften fest, die MSBuild zur Erstellung der Projektmappe verwendet. Außerdem können Sie steuern, wie der Visual Studio-Debugger Ihre Docker Compose-Apps ausführt, indem Sie Dateibezeichnungen in Docker Compose-Konfigurationsdateien festlegen.

Festlegen der MSBuild-Eigenschaften

Den Wert einer Eigenschaft legen Sie in der Projektdatei fest. 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 festlegen, dass zu Beginn des Debuggens der Browser 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 einem vorhandenen PropertyGroup-Element hinzufügen oder ein neues PropertyGroup-Element erstellen, falls noch keines vorhanden ist.

MSBuild-Eigenschaften für Docker Compose

In der folgenden Tabelle werden die MSBuild-Eigenschaften aufgeführt, die für Docker Compose-Projekte verfügbar sind.

Name der Eigenschaft Speicherort BESCHREIBUNG Standardwert
AdditionalComposeFilePaths dcproj Gibt zusätzliche Compose-Dateien in einer durch Semikolons getrennten Liste an, die an „docker-compose.exe“ für alle Befehle gesendet werden sollen. Relative Pfade aus der Docker Compose-Projektdatei (dcproj) sind zulässig. -
DockerComposeBaseFilePath dcproj Gibt den ersten Teil der Dateinamen der Docker Compose-Dateien ohne die .yml Erweiterung an. Beispiel:
1. DockerComposeBaseFilePath = null/undefined: Verwenden Sie den Basisdateipfaddocker-compose, und Dateien werden docker-compose.yml und docker-compose.override.yml benannt.
2. DockerComposeBaseFilePath = mydockercompose: Dateien erhalten die Namen mydockercompose.yml und mydockercompose.override.yml.
3. DockerComposeBaseFilePath = ..\mydockercompose: Dateien werden um eine Ebene nach oben verlagert.
docker-compose
DockerComposeBuildArguments dcproj Legt die zusätzlichen Parameter fest, die dem Befehl docker-compose build übergeben werden sollen. Beispiel: --parallel --pull.
DockerComposeDownArguments dcproj Legt die zusätzlichen Parameter fest, die dem Befehl docker-compose down übergeben werden sollen. Beispielsweise --timeout 500. -
DockerComposeEnvFilePath dcproj Der relative Pfad zu einer env-Datei, die an docker compose Befehle übergeben wird.--env-file Siehe Verwenden des attributs "env_file". Empty
DockerComposeProjectName dcproj Wenn angegeben, überschreibt der Projektname für ein Docker Compose-Projekt. „dockercompose“ + automatisch generierter Hash
DockerComposeProjectPath csproj oder vbproj Der relative Pfad zur Docker Compose-Projektdatei (dcproj). Legen Sie diese Eigenschaft fest, wenn Sie das Dienstprojekt veröffentlichen, damit die zugeordneten Imagebuildeinstellungen in der Datei „docker-compose.yml“ gefunden werden. -
DockerComposeProjectsToIgnore dcproj 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. als absolute Pfade.
Hinweis: Die Pfade sollten durch das Trennzeichen ; getrennt werden.
-
DockerComposeUpArguments dcproj Legt die zusätzlichen Parameter fest, die dem Befehl docker-compose up übergeben werden sollen. Beispiel: --timeout 500. -
DockerDevelopmentMode dcproj Steuert, ob das Benutzerprojekt im Container erstellt wird. Die zulässigen Werte Fast und Regular steuern, welche Stages in einem Dockerfile erstellt werden. Der Standardmodus ist „Fast“ in der Debugkonfiguration und andernfalls „Regular“. Fast
DockerLaunchAction dcproj Legt die Startaktion fest, die beim Drücken von F5 oder STRG+F5 ausgeführt werden soll. Zulässige Werte sind „None“, „LaunchBrowser“ und „LaunchWCFTestClient“. Keine
DockerLaunchBrowser dcproj Legt fest, ob der Browser gestartet werden soll. Wird ignoriert, wenn DockerLaunchAction festgelegt wird. False
DockerServiceName dcproj Wenn DockerLaunchAction oder DockerLaunchBrowser angegeben sind, gibt DockerServiceName an, auf welchen Dienst in der docker-compose Datei verwiesen wird. -
DockerServiceUrl dcproj Die URL, die beim Start des Browsers verwendet werden soll. Gültige Ersetzungstoken sind „{ServiceIPAddress}“, „{ServicePort}“ und „{Scheme}“. Beispiel: {Scheme}://{ServiceIPAddress}:{ServicePort}. -
DockerTargetOS dcproj Das Zielbetriebssystem, das beim Erstellen des Docker-Images verwendet wird. -

Beispiel

Wenn Sie den Speicherort der docker-compose Dateien ändern, müssen Sie durch Festlegen DockerComposeBaseFilePath auf einen relativen Pfad auch sicherstellen, dass der Buildkontext geändert wird, damit er auf den Lösungsordner verweist. Wenn Ihre docker-compose Datei beispielsweise ein Ordner namens DockerComposeFiles ist, 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 Datei mydockercompose.yml sollte folgendermaßen aussehen, dabei muss der Buildkontext auf den relativen Pfad des Projektmappenordners (in diesem Fall ..) festgelegt sein.

version: '3.4'

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

Hinweis

DockerComposeBuildArguments, DockerComposeDownArguments und DockerComposeUpArguments sind neu in Visual Studio 2019 Version 16.3.

Außerkraftsetzen der Docker Compose-Konfiguration von Visual Studio

In der Regel wird docker-compose.override.yml verwendet, um bestimmte Einstellung in docker-compose.yml außer Kraft zu setzen. Darüber hinaus generiert Visual Studio Dateien docker-compose.vs.debug.g.yml (für den Schnellmodus) und docker-compose.vs.release.g.yml (für den regulären 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 namens docker-compose.vs.debug.yml (für den Modus Fast) oder docker-compose.vs.release.yml (für den Modus Regular) im selben Verzeichnis wie die Datei docker-compose.yml ablegen. Klicken Sie mit der rechten Maustaste auf das Docker Compose-Projekt, und wählen Sie "Ordner öffnen" in Explorer aus, und verwenden Sie dann "Vorhandenes Element hinzufügen>", um die Datei ihrem Docker Compose-Projekt hinzuzufügen.

Tipp

Um die Standardwerte für eine der Visual Studio-Einstellungen zu ermitteln, suchen Sie im Verzeichnis für die Zwischenausgabe (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

Sie können in docker-compose.vs.debug.yml oder docker-compose.vs.release.yml spezifische Bezeichnungen für das Außerkraftsetzen wie folgt definieren:

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

Setzen Sie wie im vorherigen Beispiel die Werte in doppelte Anführungszeichen, und verwenden Sie den umgekehrten Schrägstrich als Escapezeichen für umgekehrte Schrägstriche in Pfaden.

Bezeichnungsname Beschreibung
com.microsoft.visualstudio.debuggee.program Das Programm, das zu Beginn des Debuggens gestartet wird. Bei .NET Core-Apps ist für diese Einstellung in der Regel dotnet festgelegt.
com.microsoft.visualstudio.debuggee.arguments Die Argumente, die zu Beginn des Debuggens dem Programm übergeben werden. Bei .NET Core-Apps sind diese Argumente in der Regel zusätzliche Suchpfade für NuGet-Pakete, auf die der Pfad zur Ausgabeassembly des Projekts folgt.
com.microsoft.visualstudio.debuggee.workingdirectory Das Verzeichnis, das zu Beginn des Debuggens als Startverzeichnis verwendet wird. Bei Linux-Containern ist für diese Einstellung üblicherweise /app festgelegt, bei Windows-Containern C:\app.
com.microsoft.visualstudio.debuggee.killprogram Mit diesem Befehl wird ggf. das Programm der zu debuggenden Komponente beendet, das im Container ausgeführt wird.
Bezeichnungsname Beschreibung
com.microsoft.visualstudio.debuggee.program Das Programm, das zu Beginn des Debuggens gestartet wird. Bei .NET Core-Apps ist für diese Einstellung in der Regel dotnet festgelegt.
com.microsoft.visualstudio.debuggee.arguments Die Argumente, die zu Beginn des Debuggens dem Programm übergeben werden. Bei .NET Core-Apps sind diese Argumente in der Regel zusätzliche Suchpfade für NuGet-Pakete, auf die der Pfad zur Ausgabeassembly des Projekts folgt.
com.microsoft.visualstudio.debuggee.workingdirectory Das Verzeichnis, das zu Beginn des Debuggens als Startverzeichnis verwendet wird. Bei Linux-Containern ist für diese Einstellung üblicherweise /app festgelegt, bei Windows-Containern C:\app.
com.microsoft.visualstudio.debuggee.killprogram Mit diesem Befehl wird ggf. das Programm der zu debuggenden Komponente beendet, das im Container ausgeführt wird.
com.microsoft.visualstudio.debuggee.noattach.program Das Programm wurde gestartet, wenn Sie "Start" ohne Debugging (STRG+F5) in einem Azure-Funktionsprojekt verwenden, das in einem isolierten Prozess ausgeführt wird. Üblicherweise wird für F5 und STRG+F5 das gleiche Programm verwendet, aber wenn ein Projekttyp wie Azure Functions in einem isolierten Prozess ein anderes Programm als F5 erfordert, wird dieses verwendet.
com.microsoft.visualstudio.debuggee.noattach.arguments Die Argumente, die an das Programm übergeben werden, wenn Sie "Start" ohne Debugging (STRG+F5) in einem Azure-Funktionsprojekt verwenden, 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

Mithilfe der Einstellung target in der build-Eigenschaft können Sie deklarieren, welche Stage in Ihrem Dockerfile erstellt werden soll. Diese Außerkraftsetzung kann nur in 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 vor dem App-Start ausführen, indem Sie es mithilfe der Einstellung entrypoint vom DockerDevelopmentMode abhängig machen. Wenn Sie ein Zertifikat durch Ausführen von update-ca-certificates z. B. nur für den Modus Fast, aber nicht für den Modus Regular einrichten möchten, fügen Sie den folgenden Code nur in der Datei docker-compose.vs.debug.yml hinzu:

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

Weitere Informationen finden Sie unter Containereinstiegspunkt

Nächste Schritte

Weitere allgemeine Informationen zu MSBuild-Eigenschaften finden Sie unter MSBuild-Eigenschaften.

Siehe auch

Buildeigenschaften für Containertools

Starteinstellungen für Containertools

Verwalten von Startprofilen für Docker Compose in Visual Studio

Reservierte und bekannte Eigenschaften für MSBuild