컨테이너 도구 빌드 속성
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에 적용됩니다.
Property name | 설명 | 기본값 | 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 build 명령에 전달되는 추가 인수입니다. | 해당 없음. | 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 run 명령에 전달되는 추가 인수입니다. | 해당 없음. | 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>
참고 항목
값을 DockerfileContext
제공하여 설정할 수 있는 Docker 컨텍스트는 일반적으로 .NET Core(.NET 5 이상 포함) docker build
를 대상으로 하는 프로젝트의 경우 Visual Studio에서 명령줄에서 실행할 때 사용하는 것과 다릅니다. 솔루션 수준에서 빌드 아티팩트가 포함될 수 있도록 하려면 동작 docker build
에서 벗어나야 합니다.
호출 docker build
할 때 항상 빌드 컨텍스트를 지정하고 필요에 따라 Dockerfile의 경로를 지정할 수 있습니다. 기본값은 Dockerfile이 컨텍스트의 루트에 있지만 플래그를 -f
사용하여 대체 위치를 지정할 수 있습니다. 예를 들어 프로젝트 디렉터리 또는 docker build -f ProjectName/Dockerfile .
솔루션 디렉터리에서 빌드 docker build -f Dockerfile ..
할 수 있습니다.
다음 단계
MSBuild 속성에 대한 일반적인 내용은 MSBuild 속성을 참조하세요.