2025-08-28
1일 1아티클
데보션
스프링부트 컨테이너 이미지 경량화
문제 상황
- 스프링부트 애플리케이션을 도커 이미지로 생성 시, 용량이 큼
경량화 방법
- 기본 방법 - JDK 이미지 위에 JAR 파일 단순 복사
- 기반 이미지 :
openjdk:17-slim
(자바 실행에 필요한 모든 도구 포함) - 작업 :
app.jar
을 이미지 안에 복사 - 문제점 : slim 버전임에도 자바 실행 환경 자체가 큼, 최종 이미지 용량은 473MB
- 기반 이미지 :
- 가벼운 기반 이미지 사용
- 기반 이미지 :
openjdk:17-slim
→amazoncorretto:17-alpine
- 결과 : 최종 이미지 용량 473MB → 358MB
- 기반 이미지 :
- 멀티 스테이지 빌드 도입
- 도커 이미지 생성 과정을 여러 단계로 구분
- 1단계 (빌드) : 소스 코드 컴파일 및 실행 파일(
app.jar
) 생성 (Maven 등 무거운 빌드 도구 포함) - 2단계 (실행) : 1단계에서 만들어진 결과물(
app.jar
)만 가져와서, 가벼운 자바 실행 환경 이미지에 추가 - 결과 : 최종 이미지에 무거운 빌드 도구 미포함으로 용량 개선 가능
- 필요한 것만 추가
- 3개의 스테이지로 구분
- 1단계 (JRE 빌더) : JDK에서 앱 실행에 필요한 모듈만 골라낸 뒤 최소한의 맞춤형 JRE 생성
- 2단계 (앱 빌드) : 소스 코드 빌드하여
app.jar
생성 - 3단계 (최종) : 가장 가벼운 기반 이미지에 1번 스테이지의 결과물(맞춤형 JRE) + 2번 스테이지의 결과물(
app.jar
) 복사 - 결과 : 최종 이미지 용량 358MB → 168MB
오늘 배운 것
- 알고리즘
- swea 5656 벽돌 깨기
- 시뮬레이션
내일 할 일
- 상담 피드백 바탕으로 포트폴리오 수정 (다음주 주말까지는 완료)