容器工具建置屬性

您可以藉由設定 MSBuild 用來建置專案的屬性,來自訂 Visual Studio 如何建置容器專案。 例如,您可以變更 Dockerfile 的名稱、指定映像的標記和標籤、提供傳遞至 Docker 命令的其他引數,以及控制 Visual Studio 是否執行某些效能最佳化,例如在容器環境外部建置。 您也可以設定偵錯屬性,例如要啟動的可執行檔名稱,以及要提供的命令列引數。

若要設定屬性的值,請編輯專案檔。 例如,假設您的 Dockerfile 名為 MyDockerfile。 您可以將專案檔中的 DockerfileFile 屬性設定為如下所示。

<PropertyGroup>
   <DockerfileFile>MyDockerfile</DockerfileFile>
</PropertyGroup>

您可以將屬性設定新增至現有的 PropertyGroup 元素,或者如果沒該元素,請建立新的 PropertyGroup 元素。

.NET SDK 項目的屬性

本節描述當您選擇 .NET SDK 容器組建類型時所套用的 MSBuild 屬性。

.NET SDK 容器化專案所需的項目檔中只有一個 屬性 EnableSdkContainerDebugging。 它必須設定為 True ,才能讓 .NET SDK 項目啟用偵錯。

<PropertyGroup>
   <EnableSdkContainerDebugging>True</EnableSdkContainerDebugging>
</PropertyGroup>

Dockerfile 項目的屬性

本節說明當您選擇 Dockerfile 容器組建類型時所套用的 MSBuild 屬性。

下表顯示 Dockerfile 專案可用的 MSBuild 屬性。 NuGet 套件版本適用於 Microsoft.VisualStudio.Azure.Containers.Tools.Targets

屬性名稱 描述 預設值 NuGet 套件版本
ContainerDevelopmentMode 控制是否會啟用「在主機上建置」最佳化 (「快速模式」偵錯)。 允許的值為 [Fast][Regular] 快速 1.0.1872750 或更新
ContainerVsDbgPath VSDBG 偵錯工具的路徑。 %USERPROFILE%\vsdbg\vs2017u5 1.0.1985401 或更新
DockerDebuggeeArguments 偵錯時,會指示偵錯工具將這些引數傳遞至啟動的可執行檔。 不適用於 ASP.NET .NET Framework 專案 1.7.8 或更新
DockerDebuggeeProgram 偵錯時,會指示偵錯工具啟動此可執行檔。 針對 .NET Core 和 .NET 5 及更新版本專案:dotnet,ASP.NET .NET Framework 專案:不適用 (一律使用 IIS) 1.7.8 或更新
DockerDebuggeeKillProgram 此命令可用來終止容器中的執行中流程。 不適用於 ASP.NET .NET Framework 專案 1.7.8 或更新
DockerDebuggeeWorkingDirectory 偵錯時,會指示偵錯工具將此路徑作爲工作目錄。 C:\app (Windows) 或 /app (Linux) 1.7.8 或更新
DockerDefaultTargetOS 建置 Docker 映像時使用的預設目標作業系統。 由 Visual Studio 設定。 1.0.1985401 或更新
DockerImageLabels 套用至 Docker 映像的預設標籤集。 com.microsoft.created-by=visual-studio;com.microsoft.visual-studio.project-name=$(MSBuildProjectName) 1.5.4 或更新
DockerFastModeProjectMountDirectory 快速模式 中,此屬性會控制專案輸出目錄磁碟區掛接至執行中的容器的位置。 C:\app (Windows) 或 /app (Linux) 1.9.2 或更新
DockerfileBuildArguments 傳遞至 Docker 組建 命令的其他引數。 不適用。 1.0.1872750 或更新
DockerfileContext 建置 Docker 映像時使用的預設內容,做為相對於 Dockerfile 的路徑。 當 Docker 支援新增至專案時,由 Visual Studio 設定。 在 .NET Framework 專案中,設定為 "." (專案資料夾),而在 .NET Core 和 .NET 5 及更新版本專案中,它會設定為解決方案資料夾的相對路徑 (通常是 "..")。 1.0.1872750 或更新
DockerfileFastModeStage 在偵錯模式中建置映像時要使用的 Dockerfile 階段(也就是目標)。 Dockerfile 中發現的第一個階段 (通常是基礎)
DockerfileFile 描述將用來建置/執行專案容器的預設 Dockerfile。 此值可以是路徑。 Dockerfile 1.0.1872750 或更新
DockerfileRunArguments 傳遞至 Docker 執行 命令的其他引數。 不適用。 1.0.1872750 或更新
DockerfileRunEnvironmentFiles Docker 執行期間所套用環境檔案的分號分隔清單。 不適用。 1.0.1872750 或更新
DockerfileTag 建置 Docker 映像時要使用的標記。 在偵錯中,":dev" 會附加至標記。 使用下列規則移除非英數字元字元後的組件名稱:
如果結果標記全部是數值,則會將 "image" 插入為前置詞 (例如, image2314)
如果結果標記是空字串,則會將 "image" 作為標記。
1.0.1872750 或更新

範例

下列專案檔會顯示其中一些設定的範例。

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

注意

您可以藉由提供 DockerfileContext 的值來設定的 Docker 內容,在 Visual Studio 中,針對以 .NET Core 為目標的專案(包括 .NET 5 和更新版本),通常不同於當您從命令列執行時 docker build 所使用的專案。 必須有此脫離 docker build 的行為,才能確保可以包含解決方案層級的組建成品。

當您呼叫 docker build 時,您一律會指定組建內容,而且您可以選擇性地指定 Dockerfile 的路徑。 預設值是 Dockerfile 位於內容的根目錄中,但您可以使用 -f 旗標來指定替代位置。 例如,您可以使用專案目錄的 docker build -f Dockerfile ..,或解決方案目錄的 docker build -f ProjectName/Dockerfile . 來建置。

下一步

如需 MSBuild 屬性的一般資訊,請參閱 MSBuild 屬性

另請參閱

Docker Compose 組建屬性

容器工具啟動設定

MSBuild 保留和已知屬性