コンテナー ツールのビルド プロパティ
プロジェクトのビルドに向けて 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 | "ホスト上でビルド" の最適化 ("高速モード" のデバッグ) を有効にするかどうかを制御します。 指定できる値は、Fast と Regular です。 | 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>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>
注意
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 プロパティを参照してください。