Day3 Dockerfile 실습

0. 준비

MS 공식홈페이지 예제
위의 링크에 나온 예제를 참고해서 만들었다.

1). Console Program 작성

미리 기본 .NET으로 console program을 세팅하고,
무한 loop를 출력하는 코드를 만들었다.

dotnet new console -o App -n NetCore.Docker

아래와 같이 기본적으로 형성된다.

작성한 코드는 아래와 같다.


// Program.cs
using System;

namespace code
{
    class Program
    {
        static void Main(string[] args)
        {
            int i = 1;
            while (i > 0)
            {
                Console.WriteLine(i);
                i++;
            }
        }
    }
}
dotnet run

을 실행하면 잘 작동함을 볼 수 있다.

P.S. C# Compiler 설치 (.net 이 아니라 단순 terminal 환경에서 실행시키기 위해 노력해본 기록 안하는 것임!)

WSL2 Ubuntu linux 환경에서 개발을 진행하고 있기 때문에, 이에 맞춰 C# 컴파일 프로그램을 설치했다.

sudo apt update
sudo apt install mono-devel // compile
sudo apt install mono-runtime // exe run

Program.cs 가 존재하는 위치로 가서

mono-csc Program.cs

를 실행하면 cs 파일과 같은 이름의 exe 파일이 생성됨을 볼 수 있다.

mono Program.exe

를 실행하면 아래와 같이 잘 작동함을 볼 수 있다.

1. .NET Core 앱 게시

Docker image에 application을 추가하기 전에 먼저 앱을 게시하는 것이 선행되어야 한다.

dotnet publish -c Release

를 실행한다.

ls bin/Release/net5.0/publish

을 통해서 NetCore.Docker.dll 파일이 생성되었는지 확인한다.

2. Dockerfile

그림과 같은 위치에 Dockerfile을 생성한다.

FROM mcr.microsoft.com/dotnet/aspnet:5.0
COPY bin/Release/net5.0/publish/ App/
WORKDIR /App
ENTRYPOINT ["dotnet", "NetCore.Docker.dll"]

코드는 위와 같이 입력한다.
( 해석은 Day2 자료 참조 )

그 뒤 아래의 명령어로 Docker image를 만든다.
(-f 의 위치는 현재 Dockerfile이 있는 곳에서 생성했기 때문에 작성안함)

docker build -t practice-image .

docker images

로 확인하면 아래와 같이 잘 생성됐음을 알 수 있다.

확인차로 image를 실행하면 잘 됨을 알 수 있다.

docker run practice-image

3. Docker Container

위에 생성한 이미지를 바탕으로 Container를 만들어보자.

docker create --name practice-container practice-image

잘 만들어졌는지 확인을 하자.

docker ps -a

docker start practice-container

라고 실행을 하면 당장은 console에 보이지 않는다.

docker attach --sig-proxy=false practice-container

를 입력하면 현재 진행되는 모습을 볼 수 있다.

멈추고 싶다면

docker stop practice-container

지우고 싶다면

docker rm practice-container

를 입력하면 된다.

4. Docker image 배포

먼저 Docker에 login 한다.

sudo docker login

만약 지금까지 똑같이 따라왔다면 Docker image의 이름을 바꿔줘야한다.

sudo docker tag practice-image:latest dnflwlq3231/practice-image:latest

위에서 아래처럼 바뀐것을 확인할 수 있다.
(dnflwlq3231 부분에 본인의 docker id 를 입력하면 된다!)

다음으로 Docker에 배포한다.

 sudo docker push dnflwlq3231/practice-image:latest

잘 올라왔음을 확인할 수 있다.

좋은 웹페이지 즐겨찾기