[C# 문법] .NET 콘솔 서비스 - DockerFile, Imgae, Containger 생성하기
- C#/C# 문법
- 2022. 3. 18. 21:23
소개
- 안녕하세요. 오늘은 .NET 콘솔 서비스 프로그램을 하나 생성한 후, 해당 서비스를 Docker 컨테이너로 실행하는 방법에 대해서 알려 드리도록 하겠습니다.
- 개인적으로 Docker를 공부하고 있고, 주 언어가 C#을 이용한 .NET 어플리케이션을 개발하고 있어서 해당 부분을 기록하고자 포스팅 합니다.
요구사항
- 우선 Docker를 사용하기 위해서는 OS에 따라 다르지만, 저는 Window 11 환경에서 테스트 진행하기 때문에 Window 11 환경에 맞춰 설명 합니다.
- Docker를 실행하기 위해서는, Docker Desktop를 설치해야 하고 설치가 안되신 분들을 구글에 검색 후 설치를 우선 진행해 주시기 바랍니다.
- Docker Destkop을 설치 하였다면 이제 .NET 콘솔 서비스를 Visual Studio 2022를 통해 하나 생성 후 해당 내용을 가지고 테스트 진행하겠습니다.
개발 환경
- OS : Windows 11
- .NET Version : .NET 6
- 개발 도구 : Visual Studio 2022
1. 작업자 서비스 프로젝트 생성하기
- 저는 현재 Visual Studio 2022와 .NET6 환경에서 작업하고 있다는점 참고해 주세요.
- 제일 먼저, Visual Studio 2022를 실행하고, 작업자 서비스 프로젝트 하나를 생성합니다.
2. 프로젝트 우클릭 -> 추가 -> Docker 지원 선택
- 앞서 생성한 작업자 서비스 프로젝트에 마우스를 갖다 놓습니다.
- 다음으로 프로젝트 우 클릭 -> 추가 -> Docker 지원 메뉴를 선택합니다.
3. Docker File 옵션 선택
- 다음으로 Docker File 옵션이 나옵니다.
- 옵션은 크게 Linux, Window 2개 옵션이 있고, 현재 내 OS 환경이 Windows Server 가 아닌 일반 Windows 혹은 Linux 유저라면 Linux 선택합니다.
- 저도 Windows 11 이기 때문에, Linux 옵션을 선택하였습니다.
4. 생성된 Dockerfile 확인
- 그럼 자동으로 Dockerfile이 프로젝트에 생성된 것을 확인할 수 있습니다.
- 내용은 다음과 같습니다.
- 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/runtime:6.0 AS base
WORKDIR /app
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["DockerContainer/DockerContainer.csproj", "DockerContainer/"]
RUN dotnet restore "DockerContainer/DockerContainer.csproj"
COPY . .
WORKDIR "/src/DockerContainer"
RUN dotnet build "DockerContainer.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "DockerContainer.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "DockerContainer.dll"]
5. 프로젝트 빌드
- 이제 프로젝트 빌드를 하게 되면, 자동으로 Dockerfile 실행 -> 이미지 생성 -> 컨테이너 생성이 됩니다.
- 실제로 Docker 에서 컨테이너가 정상적으로 실행 되었는지 확인하려면, cmd 혹은 Powershell 을 통해 아래와 같은 명령어를 입력합니다.
docker ps -a or docker ps
- 확인 결과, 정상적으로 Docker Container가 실행되어 동작하는 것을 확인할 수 있습니다.
728x90
'C# > C# 문법' 카테고리의 다른 글
[C# 동시성 프로그래밍] - 동시성 프로그래밍 개념 정리 (0) | 2022.05.07 |
---|---|
[C# 문법] C# StringBuilder 성능 개선 (0) | 2022.04.28 |
[C# 문법] C# 에서 Process로 Python 파일 실행하기 (0) | 2022.03.18 |
[C# 문법] C# 에서 IronPython 이용하여 Python 연동 (0) | 2022.03.18 |
[C# 문법] C# .NET의 DateTime 모범 사례 (1) | 2022.02.16 |
이 글을 공유하기