Właściwości kompilacji narzędzia Docker Compose

Oprócz właściwości sterujących poszczególnymi projektami platformy Docker opisanymi we właściwościach kompilacji narzędzi Kontener Tools można również dostosować sposób kompilowania projektów narzędzia Docker Compose przez ustawienie właściwości narzędzia Docker Compose używanych przez program MSBuild do kompilowania rozwiązania. Możesz również kontrolować sposób uruchamiania aplikacji docker Compose przez debuger programu Visual Studio, ustawiając etykiety plików w plikach konfiguracji narzędzia Docker Compose.

Jak ustawić właściwości programu MSBuild

Aby ustawić wartość właściwości, edytuj plik projektu. W przypadku właściwości narzędzia Docker Compose ten plik projektu jest plikiem z rozszerzeniem dcproj, chyba że w tabeli w następnej sekcji wskazano inaczej. Załóżmy na przykład, że chcesz określić, aby uruchomić przeglądarkę podczas uruchamiania debugowania. Właściwość można ustawić DockerLaunchAction w pliku projektu dcproj w następujący sposób.

<PropertyGroup>
   <DockerLaunchAction>LaunchBrowser</DockerLaunchAction>
</PropertyGroup>

Możesz dodać ustawienie właściwości do istniejącego PropertyGroup elementu lub jeśli go nie ma, utwórz nowy PropertyGroup element.

Właściwości narzędzia Docker Compose w programie MSBuild

W poniższej tabeli przedstawiono właściwości programu MSBuild dostępne dla projektów narzędzia Docker Compose.

Nazwa właściwości Lokalizacja opis Domyślna wartość
AdditionalComposeFilePaths dcproj Określa dodatkowe pliki redagowania na liście rozdzielanej średnikami, które mają być wysyłane do docker-compose.exe dla wszystkich poleceń. Ścieżki względne z pliku projektu Docker Compose (dcproj) są dozwolone. -
DockerComposeBaseFilePath dcproj Określa pierwszą część plików plików docker Compose bez .yml rozszerzenia. Na przykład: .
1. DockerComposeBaseFilePath = null/undefined: użyj podstawowej ścieżki docker-composepliku , a pliki będą nazwane docker-compose.yml i docker-compose.override.yml.
2. DockerComposeBaseFilePath = mydockercompose: pliki będą nazwane mydockercompose.yml i mydockercompose.override.yml.
3. DockerComposeBaseFilePath = .. \mydockercompose: pliki będą mieć jeden poziom.
docker-compose
DockerComposeBuildArguments dcproj Określa dodatkowe parametry, które mają być przekazywane do docker-compose build polecenia. Na przykład --parallel --pull.
DockerComposeDownArguments dcproj Określa dodatkowe parametry, które mają być przekazywane do docker-compose down polecenia. Na przykład --timeout 500. -
DockerComposeEnvFilePath dcproj Ścieżka względna do pliku env, który zostanie przekazany do docker compose poleceń za pośrednictwem polecenia --env-file. Zobacz Zastąp element plikiem env. Pusty
DockerComposeProjectName dcproj Jeśli zostanie określony, zastępuje nazwę projektu dla projektu Docker Compose. "dockercompose" + automatycznie wygenerowany skrót
DockerComposeProjectPath csproj lub vbproj Ścieżka względna do pliku projektu Docker Compose (dcproj). Ustaw tę właściwość podczas publikowania projektu usługi, aby znaleźć skojarzone ustawienia kompilacji obrazu przechowywane w pliku docker-compose.yml. -
DockerComposeProjectsToIgnore dcproj Określa projekty, które mają być ignorowane przez narzędzia Docker Compose podczas debugowania. Tej właściwości można używać dla dowolnego projektu. Ścieżki plików można określić na jeden z dwóch sposobów:
1. Względem dcproj. Na przykład <DockerComposeProjectsToIgnore>path\to\AngularProject1.csproj</DockerComposeProjectsToIgnore>.
2. Ścieżki bezwzględne.
Uwaga: ścieżki powinny być oddzielone znakiem ;ogranicznika .
-
DockerComposeUpArguments dcproj Określa dodatkowe parametry, które mają być przekazywane do docker-compose up polecenia. Na przykład --timeout 500. -
DockerDevelopmentMode dcproj Określa, czy projekt użytkownika jest wbudowany w kontenerze. Dozwolone wartości kontrolki Fast lub Regular, które etapy są wbudowane w plik Dockerfile. Konfiguracja debugowania jest trybem szybkim domyślnie i trybem regularnym. Szybkie przetwarzanie
DockerLaunchAction dcproj Określa akcję uruchamiania do wykonania na klawiszu F5 lub Ctrl+F5. Dozwolone wartości to None, LaunchBrowser i LaunchWCFTestClient. Brak
DockerLaunchBrowser dcproj Wskazuje, czy należy uruchomić przeglądarkę. Ignorowane, jeśli określono parametr DockerLaunchAction. Fałsz
DockerServiceName dcproj Jeśli określono parametr DockerLaunchAction lub DockerLaunchBrowser, usługa DockerServiceName określa, która usługa, docker-compose do której odwołuje się plik, zostanie uruchomiona. -
DockerServiceUrl dcproj Adres URL do użycia podczas uruchamiania przeglądarki. Prawidłowe tokeny zastępcze to "{ServiceIPAddress}", "{ServicePort}" i "{Scheme}". Na przykład: {Scheme}://{ServiceIPAddress}:{ServicePort} -
DockerTargetOS dcproj Docelowy system operacyjny używany podczas kompilowania obrazu platformy Docker. -

Przykład

Jeśli zmienisz lokalizację docker-compose plików, ustawiając DockerComposeBaseFilePath ścieżkę względną, należy również upewnić się, że kontekst kompilacji został zmieniony, aby odwoływania się do folderu rozwiązania. Jeśli na przykład docker-compose plik jest folderem o nazwie DockerComposeFiles, plik Docker Compose powinien ustawić kontekst kompilacji na ".". /..", w zależności od tego, gdzie jest względem folderu rozwiązania.

<?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>

Plik mydockercompose.yml powinien wyglądać następująco: kontekst kompilacji ustawiony na ścieżkę względną folderu rozwiązania (w tym przypadku ..).

version: '3.4'

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

Uwaga

DockerComposeBuildArguments, DockerComposeDownArguments i DockerComposeUpArguments są nowe w programie Visual Studio 2019 w wersji 16.3.

Zastępowanie konfiguracji narzędzia Docker Compose w programie Visual Studio

Zazwyczaj docker-compose.override.yml służy do zastępowania niektórych ustawień w docker-compose.yml. Ponadto program Visual Studio generuje przesłonięcia plików docker-compose.vs.debug.g.yml (w trybie szybkim) i docker-compose.vs.release.g.yml (dla trybu regularnego) z ustawieniami specyficznymi dla uruchamiania aplikacji w programie Visual Studio. Te ustawienia programu Visual Studio można zastąpić, umieszczając plik o nazwie docker-compose.vs.debug.yml (dla trybu szybkiego ) lub docker-compose.vs.release.yml (dla trybu regularnego ) w tym samym katalogu co plik docker-compose.yml . Kliknij prawym przyciskiem myszy projekt Docker Compose i wybierz polecenie Otwórz folder w Eksplorator plików , a następnie użyj polecenia Dodaj>istniejący element, aby dodać plik do projektu Docker Compose.

Napiwek

Aby dowiedzieć się, jakie są wartości domyślne dowolnego z ustawień programu Visual Studio, poszukaj w katalogu danych wyjściowych pośrednich (na przykład obj/Docker) dla docker-compose.vs.debug.g.yml lub docker-compose.vs.release.g.yml. Te pliki są generowane przez program Visual Studio i nie powinny być modyfikowane.

Etykiety plików narzędzia Docker Compose

W docker-compose.vs.debug.yml lub docker-compose.vs.release.yml można zdefiniować etykiety specyficzne dla zastępowania w następujący sposób:

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

Użyj podwójnych cudzysłowów wokół wartości, jak w poprzednim przykładzie, i użyj ukośnika odwrotnego jako znaku ucieczki dla ukośników odwrotnych w ścieżkach.

Label name opis
com.microsoft.visualstudio.debuggee.program Program został uruchomiony podczas uruchamiania debugowania. W przypadku aplikacji platformy .NET Core to ustawienie jest zwykle dotnet.
com.microsoft.visualstudio.debuggee.arguments Argumenty przekazywane do programu podczas uruchamiania debugowania. W przypadku aplikacji platformy .NET Core argumenty te są zazwyczaj dodatkowymi ścieżkami wyszukiwania pakietów NuGet, po których następuje ścieżka do zestawu wyjściowego projektu.
com.microsoft.visualstudio.debuggee.workingdirectory Katalog używany jako katalog początkowy podczas uruchamiania debugowania. To ustawienie jest zazwyczaj /app dla kontenerów systemu Linux lub C:\app dla kontenerów systemu Windows.
com.microsoft.visualstudio.debuggee.killprogram To polecenie służy do zatrzymywania programu debuggee działającego wewnątrz kontenera (w razie potrzeby).
Label name opis
com.microsoft.visualstudio.debuggee.program Program został uruchomiony podczas uruchamiania debugowania. W przypadku aplikacji platformy .NET Core to ustawienie jest zwykle dotnet.
com.microsoft.visualstudio.debuggee.arguments Argumenty przekazywane do programu podczas uruchamiania debugowania. W przypadku aplikacji platformy .NET Core argumenty te są zazwyczaj dodatkowymi ścieżkami wyszukiwania pakietów NuGet, po których następuje ścieżka do zestawu wyjściowego projektu.
com.microsoft.visualstudio.debuggee.workingdirectory Katalog używany jako katalog początkowy podczas uruchamiania debugowania. To ustawienie jest zazwyczaj /app dla kontenerów systemu Linux lub C:\app dla kontenerów systemu Windows.
com.microsoft.visualstudio.debuggee.killprogram To polecenie służy do zatrzymywania programu debuggee działającego wewnątrz kontenera (w razie potrzeby).
com.microsoft.visualstudio.debuggee.noattach.program Program został uruchomiony podczas korzystania z polecenia Uruchom bez debugowania (Ctrl+F5) w projekcie usługi Azure Functions uruchamianym w izolowanym procesie. Zazwyczaj zarówno F5, jak i Ctrl+F5 używają tego samego programu, ale jeśli jakikolwiek typ projektu, taki jak Usługa Azure Functions w izolowanym procesie, wymaga innego programu niż F5, zostanie użyty.
com.microsoft.visualstudio.debuggee.noattach.arguments Argumenty przekazane do programu podczas korzystania z polecenia Uruchom bez debugowania (Ctrl+F5) w projekcie usługi Azure Functions, który działa w izolowanym procesie.

Dostosowywanie procesu kompilacji platformy Docker

Możesz zadeklarować, który etap ma być kompilowany w pliku Dockerfile, używając target ustawienia we build właściwości . To zastąpienie może być używane tylko w docker-compose.vs.debug.yml lub docker-compose.vs.release.yml

services:
  webapplication1:
    build:
      target: customStage
    labels:
      ...

Dostosowywanie procesu uruchamiania aplikacji

Możesz uruchomić polecenie lub skrypt niestandardowy przed uruchomieniem aplikacji przy użyciu entrypoint ustawienia i ustawić go w zależności DockerDevelopmentModeod . Jeśli na przykład musisz skonfigurować certyfikat tylko w trybie szybkim, uruchamiając update-ca-certificatespolecenie , ale nie w trybie regularnym, możesz dodać następujący kod tylkow docker-compose.vs.debug.yml:

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

Następne kroki

Aby uzyskać ogólne informacje o właściwościach programu MSBuild, zobacz Właściwości programu MSBuild.

Zobacz też

Właściwości kompilacji narzędzi kontenera

Ustawienia uruchamiania narzędzi kontenera

Zarządzanie profilami uruchamiania aplikacji Docker Compose w programie Visual Studio

Właściwości zarezerwowane i dobrze znane w programie MSBuild