다음을 통해 공유


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

Visual Studio 외부에서 Dockerfile을 사용하여 컨테이너 프로젝트를 빌드하려는 경우 명령줄에서 빌드할 docker build, MSBuild, dotnet build또는 dotnet publish 사용할 수 있습니다.

.NET SDK 빌드 형식을 사용하는 경우 Dockerfile이 없으므로 docker build사용할 수 없습니다. 대신 MSBuild, dotnet build 또는 dotnet publish 사용하여 명령줄에서 빌드합니다.

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 사용

메모

이 섹션에서는 Dockerfile 컨테이너 빌드 유형을 선택할 때 Docker 컨테이너를 사용자 지정하는 방법을 설명합니다. .NET SDK 빌드 유형을 사용하는 경우 사용자 지정 옵션이 다르며 이 문서의 정보를 적용할 수 없습니다. 대신 dotnet publish를 사용하여 .NET 앱을 컨테이너화하는 을 참조하세요.

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

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

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

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

Docker Compose 프로젝트를 사용하는 경우 다음 명령을 사용하여 이미지를 빌드합니다.

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

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

  • 컨테이너 프로젝트 에 대한MSBuild 속성.
  • MSBuild