본문 바로가기
Dev/etc

[Docker] Docker로 jar파일 이미지 빌드하기

by ssyoni 2022. 2. 19.
반응형

 

간단하게 spring boot jar파일을 도커 이미지로 생성하고 컨테이너를 실행해서 서버를 띄워보는 스터디 과정을 정리한 글입니다.

docker 이미지를 생성하기 앞서 전체적인 순서를 정리해보았습니다.
1. 이미지를 빌드할 때 실행시킬 jar 파일을 준비합니다.
2. 이미지를 생성하기 위해 필요한 Dockerfile을 작성합니다.
3. 이미지를 빌드합니다.
4. 컨테이너를 실행시켜 spring boot 서버를 띄웁니다.

jar파일 준비

인텔리제이 우측 상단에 Gradle탭 > Task > boot.jar를 실행해줍니다.


빌드가 성공하면 프로젝트 build > libs 경로에 jar파일이 생성됩니다.

Dockerfile 작성

Dockerfile이란?

Dockerfile은 사용자가 이미지를 생성할 때 사용해야 할 모든 커맨드 라인을 담고 있는 일종의 매뉴얼과 같은 텍스트 문서입니다. Docker는 Dockerfile의 설명을 읽고 자동으로 이미지를 빌드할 수 있습니다.

Dockerfile은 실행할 파일과 같은 디렉토리에 존재해야 합니다. 관리하기 편하게 빌드한 jar파일을 Dockerfile을 생성할 디렉토리로 옮겨주었습니다.

그다음 같은 디렉토리 내에 Dockerfile을 작성해줍니다.

FROM openjdk:8-jdk-alpine
ARG JAR_FILE=jpashop-0.0.1-SNAPSHOT.jar
COPY ${JAR_FILE} myboot.jar
ENTRYPOINT ["java","-jar","/myboot.jar"]

FROM 이미지를 생성할 때 사용할 기반 이미지입니다. openjdk:8-jdk-alpine 이미지에서 레이어를 생성합니다.
ARG 변수 선언
COPY 실행할 jar파일을 도커 컨테이너 내부에 myboot.jar라는 이름으로 복사합니다. 상대 경로로 위치도 같이 설정 가능합니다.
ENTRYPOINT 컨테이너가 시작될 때 실행할 스크립트 혹은 명령을 정의합니다.

Image 빌드하기

docker build -t jpashop .

-t : 특정 이름으로 이미지를 빌드한다는 의미의 옵션입니다.
. : Dockerfile의 경로를 나타냅니다. 현재는 빌드 명령어가 dockerfile와 같은 경로에서 실행되기 때문에 (.)으로 작성하였습니다.

docker images 명령어로 생성한 이미지를 조회합니다.

 

Container 실행

docker run -it -p 8081:8080 --name test jpashop

-p <external_host_port> : <container_host_port> : 호스트의 포트를 노출된 컨테이너 포트에 명시적으로 매핑하는 옵션입니다. 로컬의 8081 포트와 컨테이너의 8080 포트를 매핑합니다.




https://docs.docker.com/engine/reference/builder/

 

Dockerfile reference

 

docs.docker.com

https://www.ibm.com/docs/ko/rtw/9.0.1?topic=stubs-publishing-docker-running-in-docker-container

반응형

댓글