본문 바로가기

Docker

jar Dockerfile 작성 & image만들기

728x90
반응형

intellij 기준bootJar를 이용해서 jar파일을 만들어준다.

 

 

그러면 build/libs 밑에 jar파일이 생성된다.

 

jar 파일 실행방법은 java -jar ROOT.jar 이다.

 

이제 dockerfile을 작성해보자.

 

docker search openjdk11

docker로 검색해보면 openjdk11 목록을 확인할 수 있다.

기본으로 선택하면 adoptopenjdk/openjdk11을 선택하면된다. 

 

DOCKER FILE 작성

FROM adoptopenjdk/openjdk11

VOLUME /application

ARG DEPENDENCY=./build/libs/ROOT
COPY ${DEPENDENCY}/BOOT-INF/lib ./BOOT-INF/lib
COPY ${DEPENDENCY}/org ./org
COPY ${DEPENDENCY}/META-INF ./META-INF
COPY ${DEPENDENCY}/BOOT-INF/classes ./BOOT-INF/classes
COPY ${DEPENDENCY}/BOOT-INF/classpath.idx ./BOOT-INF/classpath.idx

ENTRYPOINT ["java", "org.springframework.boot.loader.JarLauncher"]

 

jar를 복사해서 이미지로 만들어도 되지만 COPY한 이유는 ?

 

docker이미지는 여러 layer로 나눠서 저장/관리되는데 약간의 코드만 고쳐도 jar파일을 포함하는 레이어 전체가 교체되어야 한다. 이는 Image생성시간이나 배포시간도 커지게 되므로 거의 변경되지 않는 Dependency와 자주 변경되는 application code를 분리해서 다른 Layer에 관리하면 성능 향상을 기대할 수 있다고 한다. 

 

중요한점은 library를 먼저 COPY해야 LayerCaching잇점을 살릴 수 있다고 한다. 

 

docker build . -t root

dockerfile이 있는 경로에서 build 명령어를 통해 이미지를 생성한다.

-t 옵션은 이미지명을 입력할 수 있다.

 

이미지 확인은 docker images

728x90
반응형