コンテナー ツールのビルド プロパティ

プロジェクトのビルドに向けて 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 だけです。 .NET SDK プロジェクトでデバッグを有効にするには、これを True に設定する必要があります。

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

Dockerfile プロジェクトのプロパティ

このセクションでは、Dockerfile コンテナーのビルドの種類を選ぶ場合に適用される MSBuild プロパティについて説明します。

次の表は、Dockerfile プロジェクトで使用できる MSBuild プロパティを示しています。 NuGet パッケージ バージョンは、Microsoft.VisualStudio.Azure.Containers.Tools.Targets に適用されます。

プロパティ名 説明 既定値 NuGet パッケージ バージョン
ContainerDevelopmentMode "ホスト上でビルド" の最適化 ("高速モード" のデバッグ) を有効にするかどうかを制御します。 指定できる値は、FastRegular です。 Fast 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 Dockerfile の相対パスとして Docker イメージをビルドするときに使用される既定のコンテキスト。 プロジェクトに 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>

注意

Visual Studio では、DockerfileContext に値を指定して設定できる Docker コンテキストは、通常、.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 の予約済みおよび既知のプロパティ