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 .dcproj
z rozszerzeniem, 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 w .dcproj
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-compose pliku , 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 jest przekazywany do docker compose poleceń za pośrednictwem polecenia --env-file . Zobacz Używanie atrybutu env_file. |
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 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 funkcji platformy Azure 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 przekazywane do programu w przypadku użycia polecenia Uruchom bez debugowania (Ctrl+F5) w projekcie funkcji platformy Azure, który jest uruchamiany w izolowanym procesie. |
com.microsoft.visual-studio.project-name | Nazwa projektu, który pomaga programowi Visual Studio znaleźć projekt, jeśli projekt nie znajduje się w tym samym folderze co plik Dockerfile. |
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 DockerDevelopmentMode
od . Jeśli na przykład musisz skonfigurować certyfikat tylko w trybie szybkim, uruchamiając update-ca-certificates
polecenie , ale nie w trybie regularnym, możesz dodać następujący kod tylko w docker-compose.vs.debug.yml:
services:
webapplication1:
entrypoint: "sh -c 'update-ca-certificates && tail -f /dev/null'"
labels:
...
Aby uzyskać więcej informacji, zobacz Punkt wejścia kontenera
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