Właściwości kompilacji narzędzi kontenera
Możesz dostosować sposób kompilowania projektów kontenerów przez program Visual Studio, ustawiając właściwości używane przez program MSBuild do kompilowania projektu. Można na przykład zmienić nazwę pliku Dockerfile, określić tagi i etykiety dla obrazów, podać dodatkowe argumenty przekazane do poleceń platformy Docker i kontrolować, czy program Visual Studio wykonuje pewne optymalizacje wydajności, takie jak kompilowanie poza środowiskiem kontenera. Można również ustawić właściwości debugowania, takie jak nazwa pliku wykonywalnego do uruchomienia, oraz argumenty wiersza polecenia, które mają być podane.
Aby ustawić wartość właściwości, edytuj plik projektu. Załóżmy na przykład, że plik Dockerfile nosi nazwę MyDockerfile. Właściwość można ustawić DockerfileFile
w pliku projektu w następujący sposób.
<PropertyGroup>
<DockerfileFile>MyDockerfile</DockerfileFile>
</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 projektów zestawu .NET SDK
W tej sekcji opisano właściwości programu MSBuild, które mają zastosowanie podczas wybierania typu kompilacji kontenera zestawu SDK platformy .NET.
W pliku projektu jest tylko jedna właściwość, EnableSdkContainerDebugging
która jest wymagana dla projektów konteneryzowanych zestawu SDK platformy .NET. Musi być ustawiona na True
wartość dla projektów zestawu .NET SDK, aby umożliwić debugowanie.
<PropertyGroup>
<EnableSdkContainerDebugging>True</EnableSdkContainerDebugging>
</PropertyGroup>
Właściwości projektów Dockerfile
W tej sekcji opisano właściwości programu MSBuild stosowane podczas wybierania typu kompilacji kontenera Dockerfile.
W poniższej tabeli przedstawiono właściwości programu MSBuild dostępne dla projektów dockerfile. Wersja pakietu NuGet ma zastosowanie do elementu Microsoft.VisualStudio.Azure.Containers.Tools.Targets.
Nazwa właściwości | opis | Domyślna wartość | Wersja pakietu NuGet |
---|---|---|---|
ContainerDevelopmentMode | Określa, czy jest włączona optymalizacja "tryb kompilacji na hoście" ("Debugowanie trybu szybkiego". Dozwolone wartości to Fast i Regular. | Szybkie przetwarzanie | 1.0.1872750 lub nowszy |
ContainerVsDbgPath | Ścieżka debugera VSDBG. | %USERPROFILE%\vsdbg\vs2017u5 |
1.0.1985401 lub nowszy |
DockerDebuggeeArguments | Podczas debugowania debuger jest poinstruowany o przekazaniu tych argumentów do uruchomionego pliku wykonywalnego. | Nie dotyczy projektów platformy .NET Framework ASP.NET | 1.7.8 lub nowsza |
DockerDebuggeeProgram | Podczas debugowania debuger jest poinstruowany o uruchomieniu tego pliku wykonywalnego. | W przypadku projektów .NET Core i .NET 5 i nowszych: dotnet, ASP.NET .NET Framework projects: Not applicable (Internet Information Services (IIS) jest zawsze używany) | 1.7.8 lub nowsza |
DockerDebuggeeKillProgram | To polecenie służy do zabijania uruchomionego procesu w kontenerze. | Nie dotyczy projektów platformy .NET Framework ASP.NET | 1.7.8 lub nowsza |
DockerDebuggeeWorkingDirectory | Podczas debugowania debuger jest poinstruowany, aby używał tej ścieżki jako katalogu roboczego. | C:\app (Windows) lub /app (Linux) | 1.7.8 lub nowsza |
DockerDefaultTargetOS | Domyślny docelowy system operacyjny używany podczas kompilowania obrazu platformy Docker. | Ustaw przez program Visual Studio. | 1.0.1985401 lub nowszy |
DockerImageLabels | Domyślny zestaw etykiet zastosowanych do obrazu platformy Docker. | com.microsoft.created-by=visual-studio; com.microsoft.visual-studio.project-name=$(MSBuildProjectName) | 1.5.4 lub nowsze |
DockerFastModeProjectMountDirectory | W trybie szybkim ta właściwość steruje miejscem, w którym katalog wyjściowy projektu jest zainstalowany woluminem w uruchomionym kontenerze. | C:\app (Windows) lub /app (Linux) | 1.9.2 lub nowsze |
DockerfileBuildArguments | Dodatkowe argumenty przekazane do polecenia kompilacji platformy Docker. | Nie dotyczy. | 1.0.1872750 lub nowszy |
DockerfileContext | Domyślny kontekst używany podczas kompilowania obrazu platformy Docker jako ścieżka względem pliku Dockerfile. | Ustawiana przez program Visual Studio po dodaniu obsługi platformy Docker do projektu. W projektach .NET Framework ustaw wartość "." (folder projektu) oraz w projektach .NET Core i .NET 5 i nowszych jest ustawiona na ścieżkę względną do folderu rozwiązania (zazwyczaj ".."). | 1.0.1872750 lub nowszy |
DockerfileFastModeStage | Etap pliku Dockerfile (czyli element docelowy) używany podczas kompilowania obrazu w trybie debugowania. | Pierwszy etap znaleziony w pliku Dockerfile (zwykle podstawowym) | |
DockerfileFile | Opisuje domyślny plik Dockerfile używany do kompilowania/uruchamiania kontenera dla projektu. Ta wartość może być ścieżką. | Dockerfile | 1.0.1872750 lub nowszy |
DockerfileRunArguments | Dodatkowe argumenty przekazane do polecenia uruchamiania platformy Docker. | Nie dotyczy. | 1.0.1872750 lub nowszy |
DockerfileRunEnvironmentFiles | Rozdzielana średnikami lista plików środowiskowych stosowanych podczas uruchamiania platformy Docker. | Nie dotyczy. | 1.0.1872750 lub nowszy |
DockerfileTag | Tag do użycia podczas kompilowania obrazu platformy Docker. Podczas debugowania do tagu jest dołączany ciąg ":d ev". | Nazwa zestawu po usunięciu znaków innych niżfanumeryczne z następującymi regułami: Jeśli wynikowy tag ma wartość liczbową, "obraz" zostanie wstawiony jako prefiks (na przykład image2314) Jeśli wynikowy tag jest pustym ciągiem, "obraz" jest używany jako tag. |
1.0.1872750 lub nowszy |
Przykład
Poniższy plik projektu przedstawia przykłady niektórych z tych ustawień.
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UserSecretsId>8c7ab9a5-d578-4c40-8b6d-54d174002229</UserSecretsId>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
<!-- In CI/CD scenarios, you might need to change the context. By default, Visual Studio uses the
folder above the Dockerfile. The path is relative to the Dockerfile, so here the context is
set to the same folder as the Dockerfile. -->
<DockerfileContext>.</DockerfileContext>
<!-- Set `docker run` arguments to mount a volume -->
<DockerfileRunArguments>-v $(MSBuildProjectDirectory)/host-folder:/container-folder:ro</DockerfileRunArguments>
<!-- Set `docker build` arguments to add a custom tag -->
<DockerfileBuildArguments>-t contoso/front-end:v2.0</DockerfileBuildArguments>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.20.1" />
</ItemGroup>
</Project>
Uwaga
Kontekst platformy Docker, który można ustawić, podając wartość dla DockerfileContext
elementu , jest zwykle inny w programie Visual Studio dla projektów przeznaczonych dla platformy .NET Core (w tym platformy .NET 5 i nowszych) z elementów docker build
używanych podczas uruchamiania go z wiersza polecenia. Odejście od zachowania docker build
funkcji jest niezbędne, aby upewnić się, że można uwzględnić artefakty kompilacji na poziomie rozwiązania.
Podczas wywoływania docker build
metody zawsze określasz kontekst kompilacji i opcjonalnie możesz określić ścieżkę do pliku Dockerfile. Domyślnie plik Dockerfile znajduje się w katalogu głównym kontekstu, ale możesz użyć -f
flagi , aby określić alternatywną lokalizację. Możesz na przykład skompilować za pomocą polecenia z docker build -f Dockerfile ..
katalogu projektu lub docker build -f ProjectName/Dockerfile .
z katalogu rozwiązania.
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ędzia Docker Compose
Ustawienia uruchamiania narzędzi kontenera
Właściwości zarezerwowane i dobrze znane w programie MSBuild