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ść, EnableSdkContainerDebuggingktó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 projektów .NET Framework: Nie dotyczy (usługi IIS są zawsze używane) 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>netcoreapp3.1</TargetFramework>
    <UserSecretsId>feae72bf-2368-4487-b6c6-546c19338cb1</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.10.6" />
  </ItemGroup>

</Project>

Uwaga

Kontekst platformy Docker, który można ustawić, podając wartość dla DockerfileContextelementu , 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 buildmetody 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