더북(TheBook)

멀티스테이지 Dockerfile 전체를 자세히 살펴보지는 않겠지만 몇 가지 핵심 부분은 살펴보자. 첫 번째 스테이지(stage 1)에서 Dockerfile은 FROM 명령을 사용하여 자바 애플리케이션에 최적화된 openJDK 이미지에서 build라고 명명된 이미지를 생성한다. 이 이미지는 JAR 애플리케이션 파일을 생성하고 압축을 푸는 역할을 한다.

Note ≣


우리가 사용할 이미지(openjdk:11-slim)에는 이미 자바 11 JDK가 설치되어 있다.

다음으로 Dockerfile은 pom.xml 파일의 <configuration><buildArgs> 부분에서 설정한 JAR_FILE 변수 값을 가져온다. 그런 다음 JAR 파일을 이미지 파일 시스템에 app.jar로 복사하고 압축을 풀어 스프링 부트 애플리케이션에 포함된 여러 레이어(layer)를 뽑아낸다. 레이어가 추출되면 Dockerfile은 전체 애플리케이션 JAR 대신 이들 레이어만 포함된 또 다른 이미지를 생성한다. 두 번째 스테이지(stage 2)에서 Dockerfile은 여러 레이어를 새 이미지에 복사한다.

Note ≣


프로젝트 의존성을 변경하지 않았다면 BOOT- INF/lib 폴더는 바뀌지 않는다. 이 폴더는 애플리케이션 실행에 필요한 모든 내·외부 의존성을 포함한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.