4.5 멀티 스테이지 Dockerfile 스크립트 이해하기
이번 장에서 많은 내용을 배웠다. 마지막으로, 멀티 스테이지 Dockerfile 스크립트의 동작 원리와 컨테이너 안에서 애플리케이션을 빌드하는 것이 왜 유용한지를 설명하며 이번 장을 마무리하겠다.
첫 번째 장점은 표준화다. 나는 독자 여러분이 이번 장의 예제 이미지를 모두 성공적으로 빌드할 수 있으리라는 것을 안다. 그 이유는 독자 여러분과 내가 모두 같은 도구를 사용했기 때문이다. 독자 여러분이 어떤 운영체제를 사용하든, 그리고 로컬 컴퓨터에 어떤 도구를 설치했는지와 상관없이 모든 빌드 과정은 도커 컨테이너 내부에서 이뤄진다. 그리고 이들 컨테이너는 모든 도구를 정확한 버전으로 갖추고 있다. 이것을 실무에 적용한다면 신규 개발자의 적응 기간이나 빌드 서버의 관리 부담, 혹은 개발자 간 도구 버전의 차이로 인한 빌드 실패를 크게 줄일 수 있을 것이다.
두 번째 장점은 성능 향상이다. 멀티 스테이지 빌드의 각 단계는 자신만의 캐시를 따로 갖는다. 그리고 도커는 빌드 중에 각 인스트럭션에 해당하는 레이어 캐시를 찾는다. 해당되는 캐시를 찾지 못하면 남은 인스트럭션이 모두 실행되지만, 그 범위가 해당 단계 안으로 국한된다. 이어지는 다음 단계는 다시 캐시를 재사용하면서 시작할 수 있다. 처음에 Dockerfile 스크립트를 세심하게 최적화해서 작성한다면 이후로 캐시 재사용을 통해 90% 이상의 빌드 단계에서 시간을 절약할 수 있다.