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
잘 올라왔음을 확인할 수 있다.
Author And Source
이 문제에 관하여(Day3 Dockerfile 실습), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@miiunii/Day3-Dockerfile-실습저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)