Visual Studio 외부에서 Dockerfile을 사용하여 컨테이너 프로젝트를 빌드하려면 명령줄에서 docker build (또는 podman build), 또는 dotnet publish /t:PublishContainer를 사용하여 빌드할 수 있습니다.
.NET SDK 빌드 형식을 사용하는 경우 Dockerfile이 없으므로 docker build나 podman build를 사용할 수 없습니다. 대신 명령줄에서 빌드하기 위해 dotnet publish /t:PublishContainer를 사용하십시오.
Visual Studio 외부에서 Dockerfile을 사용하여 컨테이너 프로젝트를 빌드하려는 경우 명령줄에서 사용 docker build 하거나 dotnet publish /t:PublishContainer 빌드할 수 있습니다.
.NET SDK 빌드 형식을 사용하는 경우 Dockerfile이 없으므로 사용할 docker build수 없습니다. 대신 명령줄에서 빌드하는 데 사용합니다 dotnet publish /t:PublishContainer .
필수 조건
- Docker Desktop 또는 Podman Desktop.
- Visual Studio 또는 Podman 지원의 경우 ASP.NET 및 웹 개발, Azure 개발 워크로드 및/또는 .NET 데스크톱 개발 워크로드가 설치된 Visual Studio 2026.
필수 조건
- Docker Desktop.
- ASP.NET 및 웹 개발, Azure 개발 워크로드 및/또는 .NET 데스크톱 개발 워크로드가 설치된 Visual Studio.
Docker 빌드 사용
명령줄에서 컨테이너화된 솔루션을 빌드하려면 일반적으로 솔루션의 각 프로젝트에 대해 명령 docker build <context> 사용할 수 있습니다.
빌드 컨텍스트 인수를 제공합니다. Dockerfile에 대한 빌드 컨텍스트 이미지를 생성하는 작업 폴더로 사용되는 로컬 컴퓨터의 폴더입니다. 예를 들어 컨테이너에 복사할 때 파일을 복사하는 폴더입니다. .NET Core 프로젝트에서 기본값은 솔루션 파일(.sln 또는 .slnx)이 포함된 폴더를 사용하는 것입니다. 상대 경로로 표현되는 이 인수는 일반적으로 프로젝트 폴더의 Dockerfile 및 부모 폴더의 솔루션 파일에 대해 ".."입니다.
docker build -f Dockerfile ..
.NET Framework 프로젝트의 경우 기본 빌드 컨텍스트는 솔루션 폴더가 아닌 프로젝트 폴더입니다.
DockerfileContext 속성을 설정하여 프로젝트 파일에서 빌드 컨텍스트를 설정할 수 있습니다. 예를 들어
<PropertyGroup>
<DockerfileContext>contextfolder</DockerfileContext>
</PropertyGroup>
Docker 빌드 또는 Podman 빌드 사용
명령줄에서 컨테이너화된 솔루션을 빌드하려면 일반적으로 솔루션의 각 프로젝트에 대해 명령 docker build <context> (또는 podman build <context>)을 사용할 수 있습니다.
빌드 컨텍스트 인수를 제공합니다. Dockerfile에 대한 빌드 컨텍스트 이미지를 생성하는 작업 폴더로 사용되는 로컬 컴퓨터의 폴더입니다. 예를 들어 컨테이너에 복사할 때 파일을 복사하는 폴더입니다. .NET Core 프로젝트에서 기본값은 솔루션 파일(.sln 또는 .slnx)이 포함된 폴더를 사용하는 것입니다. 상대 경로로 표현되는 이 인수는 일반적으로 프로젝트 폴더의 Dockerfile 및 부모 폴더의 솔루션 파일에 대해 ".."입니다.
docker build -f Dockerfile ..
podman build -f Dockerfile ..
ContainerBuildContext 속성을 설정하여 프로젝트 파일에서 빌드 컨텍스트를 설정할 수 있습니다. 예를 들어
<PropertyGroup>
<ContainerBuildContext>contextfolder</ContainerBuildContext>
</PropertyGroup>
Dockerfile의 상대 경로는 빌드 컨텍스트를 기준으로 하므로 컨텍스트를 변경하는 경우 그에 따라 상대 경로를 업데이트해야 합니다.
Visual Studio 17.11 이상을 사용하면 프로젝트에 Docker 지원을 추가할 때 빌드 컨텍스트에 대한 폴더를 지정할 수 있습니다. 빌드 컨텍스트를 변경하려면, Dockerfile을 삭제합니다(유지하려는 다른 변경 내용이 없는 경우). 그런 다음 Docker 지원 추가명령을 새 빌드 컨텍스트를 지정하여 다시 실행하세요. 새 Dockerfile에는 새 빌드 컨텍스트에 맞게 업데이트된 상대 경로가 있습니다.
프로젝트에 컨테이너 지원을 추가할 때 빌드 컨텍스트에 대한 폴더를 지정할 수 있습니다. 빌드 컨텍스트를 변경하려면 Dockerfile을 삭제하고(유지하려는 다른 변경 내용이 없는 경우) 이번에는 새 빌드 컨텍스트를 지정하여 컨테이너 지원 추가를 다시 실행할 수 있습니다. 새 Dockerfile에는 새 빌드 컨텍스트에 맞게 업데이트된 상대 경로가 있습니다.
MSBuild 사용
메모
이 섹션에서는 Dockerfile 컨테이너 빌드 유형을 선택할 때 컨테이너를 사용자 지정하는 방법을 설명합니다. .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에 기본 대상 ContainerBuild아닌 대상 Build 빌드하도록 지시합니다. 예를 들어:
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 사용하여 빌드 로그 가져오기참조하세요.
명령줄에서 빌드
Visual Studio는 빠른 모드(활성화된 경우)를 사용하여 개발 및 디버깅에 가장 적합하도록 구성된 컨테이너 이미지를 생성하므로 빠른 모드 빌드 후 출력 창에서 Docker 빌드 명령을 복사하지 않는 것이 좋습니다. 표준 이미지를 비표준 최적화 없이 빌드하려면 Dockerfile을 마우스 오른쪽 단추로 클릭하고 Docker 이미지 빌드 옵션을 선택할 수 있습니다.
Visual Studio는 빠른 모드(활성화된 경우)를 사용하여 개발 및 디버깅에 가장 적합하도록 구성된 컨테이너 이미지를 생성하므로 빠른 모드 빌드 후 출력 창에서 명령을 docker build 복사 podman build 하지 않는 것이 좋습니다. 표준 이미지를 비표준 최적화 없이 빌드하려면 Dockerfile을 마우스 오른쪽 단추로 클릭하고 이미지 빌드 옵션을 선택할 수 있습니다.
Visual Studio는 태그를 dev 사용하여 디버깅 중에 시작 시간을 최적화하기 위해 특별히 준비된 이미지를 지정합니다. 그러나 이러한 이미지는 Visual Studio 컨텍스트 외부에서 사용하면 안 됩니다. 이 태그는 이미지에 빠른 모드 디버깅을 지원하기 위해 비표준 수정 및 사용자 지정이 있다는 것을 나타냅니다.
Visual Studio에서 Docker 컨테이너 사용자 지정을 참조하세요.
관련 콘텐츠
- 컨테이너 프로젝트 에 대한MSBuild 속성.
- MSBuild