Mac용 Visual Studio에서 Docker 시작Get started with Docker in Visual Studio for Mac

Mac용 Visual Studio를 사용하면 컨테이너화된 ASP.NET Core 앱을 간편하게 빌드, 디버그, 실행하고 Azure에 게시할 수 있습니다.With Visual Studio for Mac, you can easily build, debug, and run containerized ASP.NET Core apps and publish them to Azure.

사전 요구 사항Prerequisites

설치 및 설정Installation and Setup

Docker를 설치하려면 Mac용 Docker Desktop 설치의 정보를 검토하고 따릅니다.For Docker installation, review and follow the information at Install Docker Desktop for Mac.

ASP.NET Core 웹 애플리케이션을 만들고 Docker 지원 추가Creating an ASP.NET Core Web Application and Adding Docker Support

  1. 파일 > 새 솔루션 으로 이동하여 새 솔루션을 만듭니다.Create a new solution by going to File > New Solution.
  2. .NET Core > 앱 에서 웹 애플리케이션 템플릿을 선택합니다. 새 ASP.NET 애플리케이션 만들기Under .NET Core > App choose the Web Application template: Create a new ASP.NET application
  3. 대상 프레임워크를 선택합니다.Select the target framework. 이 예제에서는 .NET Core 2.2를 사용합니다. 대상 프레임워크 설정In this example we will use .NET Core 2.2: Set target framework
  4. 이름(이 예제에서는 DockerDemo) 등의 프로젝트 정보를 입력합니다.Enter the project details, such as name (DockerDemo in this example). 생성된 프로젝트에는 ASP.NET Core 웹 사이트를 빌드 및 실행하는 데 필요한 모든 기본 사항이 포함되어 있습니다.The created project contains all the basics you need to build and run an ASP.NET Core web site.
  5. 솔루션 창에서 DockerDemo 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가 > Docker 지원 추가 를 선택합니다. Docker 지원 추가In the Solution Window, right click the DockerDemo project and select Add > Add Docker Support: Add docker support

Mac용 Visual Studio에서 docker-compose 라는 새 프로젝트를 솔루션에 자동으로 추가하고, 기존 프로젝트에 Dockerfile 을 추가합니다.Visual Studio for Mac will automatically add a new project to your solution called docker-compose and add a Dockerfile to your existing project.

생성된 docker 지원 파일

Dockerfile 개요Dockerfile Overview

Dockerfile은 최종 Docker 이미지를 만들기 위한 레시피입니다.A Dockerfile is the recipe for creating a final Docker image. 그 안의 명령을 이해하려면 Dockerfile 참조를 참조하세요.Refer to Dockerfile reference for an understanding of the commands within it.

FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80

FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY DockerDemo/DockerDemo.csproj DockerDemo/
RUN dotnet restore DockerDemo/DockerDemo.csproj
COPY . .
WORKDIR /src/DockerDemo
RUN dotnet build DockerDemo.csproj -c Release -o /app

FROM build AS publish
RUN dotnet publish DockerDemo.csproj -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "DockerDemo.dll"]

위의 Dockerfilemicrosoft/aspnetcore 이미지를 기반으로 하며, 프로젝트를 빌드하고 컨테이너에 추가하여 기본 이미지를 수정하는 방법을 포함하고 있습니다.The preceding Dockerfile is based on the microsoft/aspnetcore image, and includes instructions for modifying the base image by building your project and adding it to the container.

참고

Mac용 Visual Studio에서 생성된 기본 Dockerfile은 HTTP 트래픽용 포트 80을 공개합니다.The default Dockerfile created by Visual Studio for Mac exposes Port 80 for HTTP traffic. HTTPS 트래픽을 사용하려면 Dockerfile에 Expose 443을 추가합니다.To enable HTTPS traffic, add Expose 443 to the Dockerfile.

디버깅Debugging

docker-compose 프로젝트를 시작 프로젝트로 선택하고 디버깅을 시작합니다(실행 > 디버깅 시작).Select the docker-compose project as the Startup Project and start debugging (Run > Start Debugging). 컨테이너에서 ASP.NET 프로젝트가 빌드, 배포 및 시작됩니다.This will build, deploy and launch the ASP.NET project in a container.

Docker 데스크톱을 설치한 후 첫 번째 실행에서 디버그할 때 다음 오류가 나타날 수 있습니다. Cannot start service dockerdemo: Mounts deniedOn the first run after installing Docker Desktop, you may receive the following error when trying to debug: Cannot start service dockerdemo: Mounts denied

Docker Desktop의 파일 공유 탭에 /usr/local/share/dotnet/sdk/NuGetFallbackFolder를 추가합니다.Add /usr/local/share/dotnet/sdk/NuGetFallbackFolder to the File Sharing tab in Docker Desktop:

파일 공유에 NuGetFallbackFolder 폴더 추가

빌드가 완료되면 Safari에서 애플리케이션이 시작됩니다.When the build is completed, the application will be launched in Safari:

Safari에서 실행되는 기본 Docker 프로젝트

컨테이너가 포트(예: http://localhost:32768)에서 수신 대기합니다. 이 포트는 달라질 수 있습니다.Note that the container will be listening on a port, http://localhost:32768 for example, and this port may vary.

실행 중인 컨테이너 목록을 보려면 터미널에서 docker ps 명령을 사용합니다.To see the list of running containers, use the docker ps command in Terminal.

아래 스크린샷에서 포트 릴레이를 확인합니다(PORTS 아래).Note the port relay in the screenshot below (under PORTS). 이 스크린샷에서 컨테이너는 위의 Safari에서 확인한 포트에서 수신 대기하고, Dockerfile에 정의된 대로 포트 80의 내부 웹 서버에 요청을 릴레이합니다.This shows that the container is listening on the port we saw in Safari above and relaying requests to the internal webserver on port 80 (as defined in the Dockerfile). 애플리케이션 관점에서는 포트 80에서 수신 대기 중입니다.From the application's perspective, it is listening on port 80:

Docker 컨테이너 목록