도커 파일 이미지 용량 경량화하기

dasd412·2023년 2월 21일
0

MSA 프로젝트

목록 보기
25/25

Before

도커 파일 형식

# stage 1

FROM openjdk:11-slim as build

LABEL maintainer="Young Jun Yang <dasd412@naver.com>"

ARG JAR_FILE

COPY ${JAR_FILE} app.jar

RUN mkdir -p target/dependency && (cd target/dependency; jar -xf /app.jar)

# stage 2 layerd jar

FROM openjdk:11-slim

VOLUME /tmp

ARG DEPENDENCY=/target/dependency
COPY --from=build ${DEPENDENCY}/BOOT-INF/lib /app/lib
COPY --from=build ${DEPENDENCY}/META-INF /app/META-INF
COPY --from=build ${DEPENDENCY}/BOOT-INF/classes /app

ENTRYPOINT ["java","-cp","app:app/lib/*","com.dasd412.api.configserver.ConfigServerApplication"]

stage 2에서 이미지를 stage 1과 동일한 걸로 사용하고 있었다.

사용된 이미지 용량

도커파일로 만든 이미지들의 용량은 평균적으로 500MB였다.


After

도커 파일 형식

# stage 1

FROM openjdk:11-slim as build

LABEL maintainer="Young Jun Yang <dasd412@naver.com>"

ARG JAR_FILE

COPY ${JAR_FILE} app.jar

RUN mkdir -p target/dependency && (cd target/dependency; jar -xf /app.jar)

# stage 2 layerd jar

FROM gcr.io/distroless/java:11

VOLUME /tmp

ARG DEPENDENCY=/target/dependency
COPY --from=build ${DEPENDENCY}/BOOT-INF/lib /app/lib
COPY --from=build ${DEPENDENCY}/META-INF /app/META-INF
COPY --from=build ${DEPENDENCY}/BOOT-INF/classes /app

ENTRYPOINT ["java","-cp","app:app/lib/*","com.dasd412.api.configserver.ConfigServerApplication"]

stage2에서 distroless 이미지를 사용하였다. 이 이미지는 자바 실행을 위해 가볍게 만들어진 이미지라고 한다.

사용된 이미지 용량

확인해보니 거의 절반 정도 용량이 줄어듦을 확인하였다.


참고

컨테이너 인프라 환경 구축을 위한 쿠버네티스 / 도커

https://velog.io/@c17an/Distroless-%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%9D%B4%EB%AF%B8%EC%A7%80%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%B4-%EC%B4%88%EA%B2%BD%EB%9F%89-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EB%B9%8C%EB%93%9C%ED%95%98%EA%B8%B0

profile
아키텍쳐 설계와 테스트 코드에 관심이 많음.

0개의 댓글