본문 바로가기
Docker

Spring boot 도커 파일 생성 및 배포

by 옹알이옹 2023. 8. 28.
목차

1. 도커란

2. 도커의 특징

3. Spring boot 프로젝트 도커 배포

3-1. 도커 파일 생성 및 내용 작성

3-2. 도커 이미지 생성 및 실행


 1. 도커란

구글에 Docker에 대한 개념 설명이 잘 된 것이 많으므로 정의는 간략하게 정리하고 넘어가겠다.우선 간단하게 도커란 컨테이너 기반 가상화 오픈 소스 플랫폼이다. 어떤 환경을 구성하고 패키징 할 때 매우 유용하게 쓰이며,하나의 PC에서 여러 개의 컨테이너를 실행할 수 있다. 예를 들어 WAS 컨테이너, mysql컨테이너 등등 각각 도커 위에서 실행을 시켜
사용할 수 있다. 이렇게는 이해가 잘 안 되니 똑같이 가상화 기술을 이용한 Virtual machine(VM)과 비교하면 좀 더 이해가 쉽다.

 

vm이미지docker이미지
왼쪽이 VM 오른쪽이 Docker

VM과 Docker는 비슷하지만 이와 같은 차이가 있다.

  • VM은 Host OS의 공간을 분할하여 각각의 Guest OS를 생성하고 그 위에서 애플리케이션을 실행한다.
    반면 Docker는 하나의 Host OS를 사용하지만 각각의 격리된 환경을 구성하여 사용한다.
  • VM은 Host OS까지 부팅해야 해서 끄고 킬 때 시간을 많이 소모하지만, Docker는 그 속도가 매우 빠르다.
  • VM은 특정 플랫폼에 종속적이라 이식성이 매우 낮지만, Docker는 HostOs의 영향을 받지 않고 독립적으로 실행할 수 있어 이식성이 좋은 편이다.

가장 중요한 차이점은 Docker는 HostOS와 커널을 공유하여, 적은 메모리를 사용하고 빠른 속도를 보여준다.

 


 2. 도커의 특징

  1. Docker는 여러 환경을 이미지화하여 추후에 환경 설정을 따로 할 필요 없이 이미지만 컨테이너에서 돌리면 되므로 환경 구성이 정말 편해진다.
  2. 위에서 말한 이미지를 Docker hub 란 곳에서 사람들끼리 업로드 다운로드하며 공유할 수 있다. 마치 google store에서 앱을 받듯이 필요한 컨테이너, 가령 Mysql 이미지 등을 다운로드하여 컨테이너에서 실행만 하면 된다.(최고)
  3. 러닝커브가 비교적 높다.=> 이것은 사람마다 느끼는 게 다르겠지만 주관적으로 개념부터 이해하기 좀 어려웠다.

 3. Spring boot  프로젝트 도커 배포

 

실제로 간단한 이미지를 만들어 컨테이너에 실행시켜 보자.

 

해당 프로젝트를 도커를 사용해 배포하기 위해서는 다음과 같은 절차가 필요하다.

  1. 도커 파일 생성 및 내용 작성
  2. jar 파일 생성, 도커 파일을 통해 도커 이미지 생성
  3. 해당 도커 이미지를 실행 => 컨테이너화

하나씩 천천히 진행해 보자.


3-1. 도커 파일 생성 및 내용 작성

  1. 프로젝트와 동일한 레벨의 경로에서 Dockerfile이라는 명칭으로 파일을 생성한다.=> 해당 이름은 다르면 안 된다.
  2. jar 파일을 생성한다. => intellij 기준 Tasks > build > bootJar를 실행하면 프로젝트의 build > libs 아래에 생성
  3. 도커 파일 내용을 작성한다.
FROM openjdk:11-jre-slim

WORKDIR /app

COPY build/libs/simpleProj-0.0.1-SNAPSHOT.jar simpleProj.jar

CMD ["java", "-jar", "simpleProj.jar"]

해당 코드에 대한 설명은 이렇다.

  • FROM openjdk:11-jre-slim : jdk 기반 이미지를 생성할 것을 명시하며, jdk가 없을 시 docker hub에서 다운 받아 옴
  • WORKDIR /app : 명령이 실행될 Docker Container안의 폴더 경로를 지정하고 폴더도 생성한다.
  • COPY build/libs/simpleProj-0.0.1-SNAPSHOT.jar simpleProj.jar : 빌드된 jar 파일을 복사한다.(현재 /app 아래)
    경로는 원본 jar의 경로와 파일명 띄고 Docker Container에서의 파일명
  • CMD ["java", "-jar", "simpleProj.jar"] : Dockerfile 내에서 한 번만 지정이 되며, 해당 명령문을 실행한다.
    (위의 명령문은 도커에서 해당 jar 파일을 실행하라는 명령이다.)

3-2. 도커 이미지 생성 및 실행

이제 도커 이미지를 생성해 보자.

 

<명령어>

이미지 생성 : docker build -f <도커파일명> -t <생성할 이미지 이름>
이미지 컨테이너화 : docker run -d --name <생성할 컨테이너 이름> -p <포트번호:포트번호> <이미지 이름>
컨테이너 상태 확인 : docker ps

* 첫 번째 포트번호는 외부에서 접속하는 포트 번호, 두 번째 번호는 해당 프로젝트의 포트 번호 입력

 

1. intellij에서 터미널 창으로 이동한 뒤 docker build -f Dockerfile -t simpleproj-image . 를 입력한다.

 

실행 결과

도커 이미지 생성 결과도커 컨테이너 이미지 확인

정상적으로 이미지가 생성된 것이 확인된다.

 

2. intellij에서 터미널 이동 후 docker run -d --name simpleproj-container -p 3000:8080 simpleproj-image 입력.

 

3. docker ps 명령어를 입력해 실행 중임을 확인한다.

도커 컨테이너 상태

4. localhost:3000로 요청을 보내 값을 보고 최종 확인.

브라우저에서 값 확인

mysql과 연동하는 방법은 추후 작성.

반응형