멀티 스테이지 Dockerfile 스크립트 이해하기

  • 멀티 스테이지 Dockerfile 스크립트의 동작 원리 공부하기
    • 위 실습에서 설명한 멀티 스테이지 방식의 Dockerfile을 간단하게 정리하자면 다음과 같다
  • 컨테이너 안에서 애플리케이션을 빌드하는 것이 왜 유용한지
    • 표준화
      • 실습에서 사용했던 maven처럼, 동일한 도구를 사용하는 개발자끼리는 개발 환경에 관계 없이 Dockerfile만 있으면 빌드가 가능하다. 따라서 신규 개발자의 적응 기간을 줄여주고 협업 시, 개발자 간의 도구 간의 버전 차이로 인한 의존성 이슈, 빌드 실패를 줄여준다.
    • 성능 향상
      • 도커 명령어는 각 각 자신만의 캐시(레이어 캐시)를 따로 갖는다. 한 번 origin 서버에서 데이터를 받아 캐시로 갖고 있다면 이후 캐시 재사용을 통해 응답 시간을 줄일 수 있는 Proxy 서버처럼, 도커 또한 빌드 중, 명령어에 대한 변경 사항이 없다면 레이어 캐시를 통해 빌드결과를 재사용할 수 있어 빌드 시간을 크게 줄일 수 있다.
    • 최종 산출물인 이미지를 최적화
      • 위 실습에서 생성된 이미지는 빌드 도구가 포함되지 않는다. 원래라면 maven이 포함되어, 아래 명령어를 입력하면 실행되어야 정상이지만, 최종 산출물인 이미지에는 iotd-sevice-0.1.0.jar 파일만 담겨있다.
      • 따라서 아래처럼 mvn 명령어를 입력해도 mvn을 찾을 수 없다고 나오는 것을 확인할 수 있다.
      • 도커는 이처럼 실행 파일만 이미지로 만들어 애플리케이션의 시작 시간을 단축 시키며, 의존 모듈을 줄여 외부 공격 또한 차단할 수 있다.