더북(TheBook)

첫 번째 단계인 builder 단계에서 하는 일은 다음과 같다.

기반 이미지는 diamol/maven이다. 이 이미지는 메이븐과 OpenJDK를 포함한다.

builder 단계는 먼저 이미지에 작업 디렉터리를 만든 다음 이 디렉터리에 pom.xml 파일을 복사하면서 시작된다. 이 파일에는 메이븐에서 수행할 빌드 절차가 정의돼 있다.

첫 번째 RUN 인스트럭션에서 메이븐이 실행돼 필요한 의존 모듈을 내려받는다. 이 과정에는 상당한 시간이 걸리기 때문에 별도의 단계로 분리해 레이어 캐시를 활용할 수 있도록 한다. 새로운 의존 모듈이 추가될 경우, XML 파일이 변경됐을 것이므로 이 단계가 다시 실행된다. 추가된 의존 모듈이 없다면 이미지 캐시를 재사용한다.

그다음에는 COPY . . 인스트럭션을 통해 나머지 소스 코드가 복사된다. 이 인스트럭션은 ‘도커 빌드가 실행 중인 디렉터리에 포함된 모든 파일과 서브 디렉터리를 현재 이미지 내 작업 디렉터리로 복사하라’는 의미다.

builder 단계의 마지막은 mvn package 명령을 실행하는 것이다. 이 명령은 애플리케이션을 빌드하고 패키징하라는 의미다. 입력은 자바 소스 코드이며, 출력은 JAR 포맷으로 패키징된 자바 애플리케이션이다.

builder 단계가 끝나고 나면, 컴파일된 애플리케이션이 해당 단계의 파일 시스템에 만들어진다. 메이븐을 이용한 빌드 과정에 (네트워크 문제로 의존 모듈을 받아오지 못했거나 소스 코드에 컴파일 에러가 있는 등의) 문제가 있었다면 RUN 인스트럭션이 실패하면서 전체 빌드도 실패한다.

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