다음을 통해 공유


명령줄에서 컨테이너 프로젝트 빌드

docker buildMSBuilddotnet builddotnet publishVisual Studio 외부에서 Docker파일을 사용하여 컨테이너 프로젝트를 빌드하려는 경우 , , 또는 를 사용하여 명령줄에서 빌드할 수 있습니다.

docker buildMSBuilddotnet builddotnet publish.NET SDK 빌드 유형을 사용하는 경우 Docker파일이 없으므로 을 사용할 수 없으며, 대신 , 또는 를 사용하여 명령줄에서 빌드합니다.

Docker 빌드 사용

명령줄에서 컨테이너화된 솔루션을 빌드하려는 경우, 일반적으로 솔루션의 각 프로젝트에 대해 docker build <context> 명령을 사용할 수 있습니다. ‘빌드컨텍스트’ 인수를 제공합니다. Dockerfile의 ‘빌드 컨텍스트’는 이미지를 생성하기 위한 작업 폴더로 사용되는 로컬 컴퓨터의 폴더입니다. 예를 들어 컨테이너에 복사할 때, 복사할 파일이 들어 있는 폴더입니다. .NET Core 프로젝트에서 기본값은 솔루션 파일(.sln)이 포함된 폴더를 사용하는 것입니다. 이 인수는 상대 경로로 표시되며, 일반적으로 프로젝트 폴더의 Dockerfile과 부모 폴더의 솔루션 파일은 “..”으로 지정됩니다. .NET Framework 프로젝트의 기본 빌드 컨텍스트는 솔루션 폴더가 아닌 프로젝트 폴더입니다.

docker build -f Dockerfile ..

DockerfileContext 속성을 설정하여 프로젝트 파일에서 빌드 컨텍스트를 설정할 수 있습니다. 예를 들면 다음과 같습니다.

<PropertyGroup>
   <DockerfileContext>contextfolder</DockerfileContext>
</PropertyGroup>

Dockerfile의 상대 경로는 빌드 컨텍스트를 기준으로 하므로 컨텍스트를 변경하는 경우 그에 따라 상대 경로를 업데이트해야 합니다.

Visual Studio 17.11 이상을 사용하면 프로젝트에 Docker 지원을 추가할 때 빌드 컨텍스트에 대한 폴더를 지정할 수 있습니다. 빌드 컨텍스트를 변경하려면 Dockerfile을 삭제하고(유지하려는 다른 변경 내용이 없는 경우) 이번에는 새 빌드 컨텍스트를 지정하여 Docker 지원 추가를 다시 실행할 수 있습니다. 새 Dockerfile에는 새 빌드 컨텍스트에 맞게 업데이트된 상대 경로가 있습니다.

MSBuild 사용

참고 항목

이 섹션에서는 Docker파일 컨테이너 빌드 유형을 선택할 때 Docker 컨테이너를 사용자 지정하는 방법에 대해 설명합니다. .NET SDK 빌드 유형을 사용하는 경우 사용자 지정 옵션이 다르며 이 문서의 정보는 적용되지 않습니다. 대신 닷넷 게시를 사용하여 .NET 앱 컨테이너화를 참조하세요.

Visual Studio에서 만든 .NET Framework 프로젝트용(및 Visual Studio 2017 업데이트 4 이전 버전으로 만든 .NET Core 프로젝트용) Docker파일은 멀티스테이지 Docker파일이 아닙니다. 이러한 도커파일의 단계는 코드를 컴파일하지 않습니다. 대신, Visual Studio에서 .NET Framework Dockerfile을 빌드할 때 먼저 MSBuild를 사용하여 프로젝트를 컴파일합니다. 작업이 성공하면 Visual Studio에서 Dockerfile을 빌드합니다. 이 프로세스에서는 MSBuild의 빌드 출력을 결과 Docker 이미지에 복사하기만 합니다. 코드를 컴파일하는 단계가 Dockerfile에 포함되지 않기 때문에, 명령줄에서 docker build를 사용하여 .NET Framework Dockerfile을 빌드할 수 없습니다. 이러한 프로젝트를 빌드하려면 MSBuild를 사용해야 합니다.

단일 Docker 컨테이너 프로젝트의 이미지를 빌드하려면 /t:ContainerBuild 명령 옵션으로 MSBuild를 사용할 수 있습니다. ContainerBuildBuild이 명령은 기본 대상 가 아닌 대상 을 빌드하도록 MSBuild에 지시합니다. 예시:

MSBuild MyProject.csproj /t:ContainerBuild /p:Configuration=Release

Visual Studio IDE에서 솔루션을 빌드할 때 Output 창에 표시되는 것과 유사한 출력이 표시됩니다. Visual Studio에서 다단계 빌드 최적화 기능을 사용하는 경우 디버그 구성을 빌드할 때 결과가 예상과 다를 수 있으므로 항상 /p:Configuration=Release를 사용합니다. 디버깅에 대한 컨테이너 이미지 사용자 지정을 참조하세요.

Docker Compose 프로젝트를 사용하는 경우 이 명령을 사용하여 이미지를 빌드하세요.

msbuild /p:SolutionPath=<solution-name>.sln /p:Configuration=Release docker-compose.dcproj

MSBuild 로그를 보려면 MSBuild를 사용하여 빌드 로그 가져오기를 참조하세요.