Docker Compose 빌드 속성
Container Tools 빌드 속성설명된 개별 Docker 프로젝트를 제어하는 속성 외에도 MSBuild에서 솔루션을 빌드하는 데 사용하는 Docker Compose 속성을 설정하여 Visual Studio에서 Docker Compose 프로젝트를 빌드하는 방법을 사용자 지정할 수도 있습니다. 또한 Docker Compose 구성 파일에서 파일 레이블을 설정하여 Visual Studio 디버거에서 Docker Compose 앱을 실행하는 방법을 제어할 수 있습니다.
MSBuild 속성을 설정하는 방법
속성 값을 설정하려면 프로젝트 파일을 편집합니다. Docker Compose 속성의 경우 이 프로젝트 파일은 다음 섹션의 표에 달리 표시되지 않는 한 .dcproj
확장명의 파일입니다. 예를 들어 디버깅을 시작할 때 브라우저를 시작하도록 지정한다고 가정합니다. 다음과 같이 DockerLaunchAction
프로젝트 파일에서 .dcproj
속성을 설정할 수 있습니다.
<PropertyGroup>
<DockerLaunchAction>LaunchBrowser</DockerLaunchAction>
</PropertyGroup>
기존 PropertyGroup
요소에 속성 설정을 추가하거나, 속성 설정이 없는 경우 새 PropertyGroup
요소를 만들 수 있습니다.
Docker Compose MSBuild 속성
다음 표에서는 Docker Compose 프로젝트(.dcproj
파일)에 사용할 수 있는 MSBuild 속성을 보여 줍니다.
속성 이름 | 묘사 |
---|---|
AdditionalComposeFilePaths | 모든 명령에 대해 docker-compose.exe 보낼 세미콜론으로 구분된 목록에 추가 작성 파일을 지정합니다. Docker Compose 프로젝트 파일(dcproj)의 상대 경로가 허용됩니다. |
DependencyAwareStart | 서비스 시작 순서 및 상태 검사를 제어하는 Docker Compose 속성 depends_on 및 healthcheck 지원하는 앱을 시작하는 다른 방법을 사용하도록 설정합니다.Visual Studio 17.13 이상이 필요합니다. 기본값: False |
DockerComposeBaseFilePath |
.yml 확장명 없이 Docker Compose 파일의 파일 이름의 첫 번째 부분을 지정합니다. 예를 들어: 1. DockerComposeBaseFilePath = null/undefined: docker-compose 기본 파일 경로를 사용하고 파일 이름은 docker-compose.ymldocker-compose.override.yml.2. DockerComposeBaseFilePath = mydockercompose: 파일의 이름은 mydockercompose.ymlmydockercompose.override.yml. 3. DockerComposeBaseFilePath = .. \mydockercompose: 파일이 한 수준 위로 올라오게 됩니다. 기본값: docker-compose |
DockerComposeBuildArguments |
docker-compose build 명령에 전달할 추가 매개 변수를 지정합니다. 예를 들어 --parallel --pull . |
DockerComposeDownArguments |
docker-compose down 명령에 전달할 추가 매개 변수를 지정합니다. 예를 들어 --timeout 500 . |
DockerComposeEnvFilePath |
docker compose 통해 --env-file 명령에 전달되는 .env 파일의 상대 경로입니다.
env_file 특성사용합니다.기본값: 비어 있음 |
DockerComposeProjectName | 지정한 경우 Docker Compose 프로젝트의 프로젝트 이름을 재정의합니다. 기본값: "dockercompose" + 자동 생성된 해시 |
DockerComposeProjectsToIgnore | 디버그하는 동안 Docker Compose 도구에서 무시할 프로젝트를 지정합니다. 이 속성은 모든 프로젝트에 사용할 수 있습니다. 파일 경로는 다음 두 가지 방법 중 하나로 지정할 수 있습니다. 1. dcproj를 기준으로 합니다. 예를 들어 <DockerComposeProjectsToIgnore> path\to\AngularProject1.csproj </DockerComposeProjectsToIgnore> . 2. 절대 경로입니다. 참고: 경로는 구분 기호 문자 ; 구분 기호로 구분되어야 합니다. |
DockerComposeUpArguments |
docker-compose up 명령에 전달할 추가 매개 변수를 지정합니다. 예를 들어 --timeout 500 . |
DockerDevelopmentMode | 사용자 프로젝트가 컨테이너에 빌드되는지 여부를 제어합니다.
Fast 또는 일반 컨트롤의 허용되는 값은 Dockerfile에서 빌드되는 단계를. 디버그 구성은 기본적으로 빠른 모드이고 그렇지 않으면 일반 모드입니다. 기본값: Fast |
DockerLaunchAction | F5 또는 Ctrl+F5에서 수행할 시작 작업을 지정합니다. 허용되는 값은 None, LaunchBrowser 및 LaunchWCFTestClient입니다. 기본값: 없음 |
DockerLaunchBrowser | 브라우저를 시작할지 여부를 나타냅니다. DockerLaunchAction을 지정하면 무시됩니다. 기본값: False |
DockerServiceName | DockerLaunchAction 또는 DockerLaunchBrowser가 지정된 경우 DockerServiceName은 docker-compose 파일에서 참조되는 서비스를 시작하도록 지정합니다. |
DockerServiceUrl | 브라우저를 시작할 때 사용할 URL입니다. 유효한 대체 토큰은 "{ServiceIPAddress}", "{ServicePort}" 및 "{Scheme}"입니다. 예: {Scheme}://{ServiceIPAddress}:{ServicePort} |
DockerTargetOS | Docker 이미지를 빌드할 때 사용되는 대상 OS입니다. |
또한 DockerComposeProjectPath
또는 .csproj
프로젝트 파일의 속성 .vbproj
Docker Compose 프로젝트(.dcproj
) 파일에 대한 상대 경로를 지정합니다. 서비스 프로젝트를 게시할 때 이 속성을 설정하여 docker-compose.yml 파일에 저장된 연결된 이미지 빌드 설정을 찾습니다.
본보기
docker-compose
상대 경로로 설정하여 DockerComposeBaseFilePath
파일의 위치를 변경하는 경우 솔루션 폴더를 참조하도록 빌드 컨텍스트가 변경되었는지 확인해야 합니다. 예를 들어 docker-compose
파일이 DockerComposeFiles폴더인 경우 Docker Compose 파일은 빌드 컨텍스트를 ".." 또는 ".로 설정해야 합니다. /..", 솔루션 폴더를 기준으로 하는 위치에 따라 다릅니다.
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" Sdk="Microsoft.Docker.Sdk">
<PropertyGroup Label="Globals">
<ProjectVersion>2.1</ProjectVersion>
<DockerTargetOS>Windows</DockerTargetOS>
<ProjectGuid>154022c1-8014-4e9d-bd78-6ff46670ffa4</ProjectGuid>
<DockerLaunchAction>LaunchBrowser</DockerLaunchAction>
<DockerServiceUrl>{Scheme}://{ServiceIPAddress}{ServicePort}</DockerServiceUrl>
<DockerServiceName>webapplication1</DockerServiceName>
<DockerComposeBaseFilePath>DockerComposeFiles\mydockercompose</DockerComposeBaseFilePath>
<AdditionalComposeFilePaths>AdditionalComposeFiles\myadditionalcompose.yml</AdditionalComposeFilePaths>
</PropertyGroup>
<ItemGroup>
<None Include="DockerComposeFiles\mydockercompose.override.yml">
<DependentUpon>DockerComposeFiles\mydockercompose.yml</DependentUpon>
</None>
<None Include="DockerComposeFiles\mydockercompose.yml" />
<None Include=".dockerignore" />
</ItemGroup>
</Project>
빌드 컨텍스트가 솔루션 폴더의 상대 경로(이 경우 )로 설정된 ..
파일은 다음과 같이 표시됩니다.
version: '3.4'
services:
webapplication1:
image: ${DOCKER_REGISTRY-}webapplication1
build:
context: ..
dockerfile: WebApplication1\Dockerfile
메모
DockerComposeBuildArguments, DockerComposeDownArguments 및 DockerComposeUpArguments는 Visual Studio 2019 버전 16.3의 새로운 기능입니다.
Visual Studio의 Docker Compose 구성 재정의
일반적으로 docker-compose.override.ymldocker-compose.yml특정 설정을 재정의하는 데 사용됩니다. 또한 Visual Studio는 Visual Studio 내에서 애플리케이션을 실행하는 것과 관련된 설정을 사용하여 docker-compose.vs.debug.g.yml(빠른 모드의 경우) 및 docker-compose.vs.release.g.yml(일반 모드의 경우) 재정의 파일을 생성합니다. docker-compose.yml 파일과 동일한 디렉터리에 docker-compose.vs.debug.yml(빠른 모드의 경우) 또는 docker-compose.vs.release.yml(일반 모드의 경우)이라는 파일을 배치하여 이러한 Visual Studio 설정을 재정의할 수 있습니다. Docker Compose 프로젝트를 마우스 오른쪽 단추로 클릭하고 파일 탐색기 폴더 열기를 선택한 다음, 추가>기존 항목 사용하여 Docker Compose 프로젝트에 파일을 추가합니다.
팁
Visual Studio 설정의 기본값을 확인하려면 중간 출력 디렉터리(예: obj/Docker )에서 docker-compose.vs.debug.g.yml 또는 docker-compose.vs.release.g.yml확인합니다. 이러한 파일은 Visual Studio에서 생성되며 수정해서는 안 됩니다.
Docker Compose 파일 레이블
docker-compose.vs.debug.yml 또는 docker-compose.vs.release.yml다음과 같이 재정의 관련 레이블을 정의할 수 있습니다.
services:
webapplication1:
labels:
com.microsoft.visualstudio.debuggee.workingdirectory: "C:\\my_app_folder"
앞의 예제와 같이 값 주위에 큰따옴표를 사용하고 백슬래시를 경로의 백슬래시에 대한 이스케이프 문자로 사용합니다.
레이블 이름 | 묘사 |
---|---|
com.microsoft.visualstudio.debuggee.program | 디버깅을 시작할 때 프로그램이 시작되었습니다. .NET Core 앱의 경우 이 설정은 일반적으로 dotnet . |
com.microsoft.visualstudio.debuggee.arguments | 디버깅을 시작할 때 프로그램에 전달된 인수입니다. .NET Core 앱의 경우 이러한 인수는 일반적으로 NuGet 패키지에 대한 추가 검색 경로와 프로젝트의 출력 어셈블리 경로입니다. |
com.microsoft.visualstudio.debuggee.workingdirectory | 디버깅을 시작할 때 시작 디렉터리로 사용되는 디렉터리입니다. 이 설정은 일반적으로 Linux 컨테이너에 대한 /app 또는 Windows 컨테이너용 C:\app . |
com.microsoft.visualstudio.debuggee.killprogram | 이 명령은 컨테이너 내부에서 실행되는 디버기 프로그램을 중지하는 데 사용됩니다(필요한 경우). |
레이블 이름 | 묘사 |
---|---|
com.microsoft.visualstudio.debuggee.program | 디버깅을 시작할 때 프로그램이 시작되었습니다. .NET Core 앱의 경우 이 설정은 일반적으로 dotnet . |
com.microsoft.visualstudio.debuggee.arguments | 디버깅을 시작할 때 프로그램에 전달된 인수입니다. .NET Core 앱의 경우 이러한 인수는 일반적으로 NuGet 패키지에 대한 추가 검색 경로와 프로젝트의 출력 어셈블리 경로입니다. |
com.microsoft.visualstudio.debuggee.workingdirectory | 디버깅을 시작할 때 시작 디렉터리로 사용되는 디렉터리입니다. 이 설정은 일반적으로 Linux 컨테이너에 대한 /app 또는 Windows 컨테이너용 C:\app . |
com.microsoft.visualstudio.debuggee.killprogram | 이 명령은 컨테이너 내부에서 실행되는 디버기 프로그램을 중지하는 데 사용됩니다(필요한 경우). |
com.microsoft.visualstudio.debuggee.noattach.program | 격리된 프로세스실행되는 Azure Functions 프로젝트에서 (Ctrl+F5)를 디버깅하지 않고 Start를 사용할 때 시작된 프로그램입니다. 일반적으로 F5 및 Ctrl+F5 모두 동일한 프로그램을 사용하지만 격리된 프로세스의 Azure Functions와 같은 프로젝트 형식에 F5다른 프로그램이 필요한 경우 이 프로그램이 사용됩니다. |
com.microsoft.visualstudio.debuggee.noattach.arguments | 격리된 프로세스에서 실행되는 Azure Functions 프로젝트에서 (Ctrl+)를 디버깅하지 않고 Start를 사용할 때 프로그램에 전달되는 인수입니다. |
com.microsoft.visual-studio.project-name | 프로젝트가 Dockerfile과 동일한 폴더에 없는 경우 Visual Studio에서 프로젝트를 찾는 데 도움이 되는 프로젝트의 이름입니다. |
Docker 빌드 프로세스 사용자 지정
target
속성의 build
설정을 사용하여 Dockerfile에서 빌드할 스테이지를 선언할 수 있습니다. 이 재정의는 docker-compose.vs.debug.yml 또는 docker-compose.vs.release.yml
services:
webapplication1:
build:
target: customStage
labels:
...
앱 시작 프로세스 사용자 지정
entrypoint
설정을 사용하고 DockerDevelopmentMode
종속되도록 하여 앱을 시작하기 전에 명령 또는 사용자 지정 스크립트를 실행할 수 있습니다. 예를 들어 실행하여 update-ca-certificates
모드에서만 인증서를 설정해야 하지만 일반 모드에서는 설정해야 하는 경우 다음 코드를 docker-compose.vs.debug.yml추가할 수 있습니다.
services:
webapplication1:
entrypoint: "sh -c 'update-ca-certificates && tail -f /dev/null'"
labels:
...
자세한 내용은 컨테이너 진입점 참조하세요.
다음 단계
일반적으로 MSBuild 속성에 대한 자세한 내용은 msBuild 속성 참조하세요.
참고 항목
Visual Studio Docker Compose에 대한 시작 프로필 관리