Docker Compose 빌드 속성
컨테이너 도구 빌드 속성에 설명된 개별 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 속성을 보여 줍니다.
Property name | 설명 |
---|---|
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.yml docker-compose.override.yml.2. DockerComposeBaseFilePath = mydockercompose: 파일 이름이 mydockercompose.yml 및 mydockercompose.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 | 사용자 프로젝트를 컨테이너에 빌드할지 여부를 제어합니다.
빠름 또는 일반의 허용 값은 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입니다. |
또한 .csproj
또는 .vbproj
프로젝트 파일의 속성 DockerComposeProjectPath
Docker Compose 프로젝트(.dcproj
) 파일에 대한 상대 경로를 지정합니다. 서비스 프로젝트를 게시할 때 이 속성을 설정하여 docker-compose.yml 파일에 저장된 연결된 이미지 빌드 설정을 찾습니다.
예시
상대 경로로 설정 docker-compose
하여 파일의 DockerComposeBaseFilePath
위치를 변경하는 경우 솔루션 폴더를 참조하도록 빌드 컨텍스트가 변경되었는지 확인해야 합니다. 예를 들어 파일이 DockerComposeFilesdocker-compose
폴더인 경우 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>
mydockercompose.yml 파일은 다음과 같으며, 빌드 컨텍스트가 솔루션 폴더의 상대 경로(이 경우 ..
)로 설정된 상태입니다.
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.ci.build.yml은 docker-compose.yml의 특정 설정을 재정의하는 데 사용됩니다. 또한 Visual Studio는 Visual Studio 내에서 애플리케이션을 실행하는 것과 관련된 설정을 사용하여 docker-compose.vs.debug.g.yml(빠른 모드의 경우) 및 docker-compose.vs.release.g.yml(일반 모드의 경우) 재정의 파일을 생성합니다. docker-compose.vs.debug.yml(빠름 모드의 경우) 또는 docker-compose.vs.release.yml(일반 모드의 경우) 파일을 docker-compose.yml 파일과 동일한 디렉터리에 배치하여 이러한 Visual Studio 설정을 재정의할 수 있습니다. Docker Compose 프로젝트를 마우스 오른쪽 단추로 클릭하고 파일 탐색기 폴더 열기를 선택한 다음, 기존 항목>Docker Compose 프로젝트에 파일을 추가합니다.
팁
Visual Studio 설정의 기본값을 확인하려면 docker-compose.vs.debug.g.yml 또는 docker-compose.vs.release.g.yml의 중간 출력 디렉터리(예: obj/Docker)를 살펴봅니다. 이러한 파일은 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"
앞의 예제와 같이 값을 큰따옴표로 묶고, 경로의 백슬래시에 대한 이스케이프 문자로 백슬래시를 사용합니다.
Label name | 설명 |
---|---|
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 | 이 명령은 필요한 경우 컨테이너 내부에서 실행 중인 디버기 프로그램을 중지하는 데 사용됩니다. |
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 속성을 참조하세요.