Dev/etc

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

ssyoni 2022. 2. 19. 00:15
반응형

 

간단하게 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

반응형