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 Basisdateipfad docker-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