/////////////////// 2021 - 12 - 23 수정

dotnet 6 버전 출시와 함께 dockerfile도 수정해줘야한다.

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY zomdleageApiServer.csproj .
RUN dotnet restore "프로젝트이름.csproj"
COPY . .
RUN dotnet build "프로젝트이름.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "프로젝트이름.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "프로젝트이름.dll"]

///////////////////

 

도커와 컨테이너에 대한 자세한 설명은 생략한다..

도커 설명 : 도커 (소프트웨어) - 위키백과, 우리 모두의 백과사전 (wikipedia.org)

 

도커 (소프트웨어) - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 도커(Docker)는 리눅스의 응용 프로그램들을 소프트웨어 컨테이너 안에 배치시키는 일을 자동화하는 오픈 소스 프로젝트이다.

ko.wikipedia.org

컨테이너 설명 : 컨테이너의 개념과 이점  |  Google Cloud

 

컨테이너의 개념과 이점  |  Google Cloud

Gmail에서 YouTube에 이르기까지 Google의 모든 제품은 컨테이너에서 실행됩니다. 이제까지 쌓아온 전문성을 바탕으로 Google Cloud Platform의 혁신적인 컨테이너를 선보입니다.

cloud.google.com

 

 

도커 사용하기

이 글은 Docker Desktop on Windows 을 기준으로 작성되었다.

Windows 10 64-bit: Pro, Enterprise, or Education (Build 16299 or later) 만 지원하며 Pro 를 기준으로 작성되었다.

Windows 10 Home 의 경우 Install Docker Desktop on Windows Home | Docker Documentation 을 참고하자.

 

윈도우10 설정

먼저 Hyper-v 를 활성화 시켜줘야한다.

윈도우 로고 - 오른쪽 클릭 - 앱 및 기능 - 프로그램 및 기능 - Windows 기능 켜기/끄기 - Hyper-v 활성화 해준다.

 

 

Docker Desktop on Windows

도커 데스크탑을 설치해준다. 도커 데스크탑은 리눅스를 일단 가상화를 한 후 그 위에서 컨테이너를 돌린다.

Docker Desktop on Windows : Install Docker Desktop on Windows | Docker Documentation

위 사이트에 들어간 후 Download from Docker Hub 를 눌러 다운로드 받은 후 설치한다.

 

 

Containerising a Blazor Server App

필수 구성 요소

먼저 컨테이너화를 시킬 blazor server 앱이 필요하다. 글쓴이는 기존의 작업하던 blazor api server 를 사용할것이다.

 

Dockerfile 만들기

Visual Studio를 사용하는 경우 프로젝트을 오른쪽 클릭 후 추가 - Docker 지원 을 선택한다.

그런 다음 대상 OS 를 물어보는 창이 나온다.

 

기본은 리눅스를 선택하고 진행한다.

윈도우에서 특정해서 해야할 일이 있다면 윈도우를 선택한다.

선택을 했다면 확인 을 눌러주면 몇초 후 프로젝트에 Dockerfile 이라는 파일이 생길 것이다.

 

이 파일은 그대로 사용할 경우 도커 이미지 파일이 성공적으로 빌드가 되지 않는다. 아래와 같이 수정을 해야한다.

출처 : Containerising a Blazor Server App (chrissainty.com)

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build
WORKDIR /src
COPY zomdleageApiServer.csproj .
RUN dotnet restore "프로젝트이름.csproj"
COPY . .
RUN dotnet build "프로젝트이름.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "프로젝트이름.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "프로젝트이름.dll"]

 

80 포트는 http

443 포트는 https 이다.

 

이미지 제작

인제 이미지를 정의하는 dockerfile 이 만들어졌으니 프로젝트를 도커 이미지로 만들어보자.

터미널로 dockerfile 이 있는 위치로 이동한 후 아래 명령어를 실행시켜준다.

docker build -t blazor-server-with-docker .

blazor-server-with-docker 는 이미지 이름이며 원하는대로 수정해주면 된다.

명령어 끝에 있는 . (점) 은 Docker 에게 현재 디렉토리에서 Dockerfile 을 찾도록 지시한다.

 

실행하면 주루룩 명령어가 실행되며 도커 이미지가 만들어진다.

 

Successfully tagged blazor-server-with-docker:latest 라는 메세지가 터미널에 찍히면 이미지가 다 만들어진것이다.

 

컨테이너 시작

제작한 이미지가 제대로 작동하는지 테스트를 해보자. 아래 명령어를 실행하여 새로운 컨테이너를 시작한다.

docker run -p 8080:80 blazor-server-with-docker

 

포트 뒤에 있는 blazor-server-with-docker 는 자신이 설정한 이미지 이름을 입력해준다.

warn: Microsoft.AspNetCore.DataProtection.Repositories.FileSystemXmlRepository[60]
      Storing keys in a directory '/root/.aspnet/DataProtection-Keys' that may not be persisted outside of the container. Protected data will be unavailable when container is destroyed.
warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35]
      No XML encryptor configured. Key {6016a2c4-0ac2-47cf-9359-c07c03c328eb} may be persisted to storage in unencrypted form.
info: Microsoft.Hosting.Lifetime[0]
      Now listening on: http://[::]:80
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
      Content root path: /app
warn: Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3]
      Failed to determine the https port for redirect.
info: Microsoft.Hosting.Lifetime[0]
      Application is shutting down...

같이 이미지에서 새로운 컨테이너가 만들어진것이며 http://localhost:8080/ 로 접속하면 자신의 홈페이지를 확인 할 수 있다.

 

잘 사용해보자!

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기