Day3 Dockerfile 실습

김희윤·2021년 6월 17일
0

POS공부기

목록 보기
3/8

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

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

profile
블록체인, IOT, 클라우드에 관심이 많은 개발자 지망생

0개의 댓글

관련 채용 정보