r잡초처럼
바른 프로그래밍
r잡초처럼
전체 방문자
오늘
어제
  • 분류 전체보기 (124)
    • FastAPI (7)
    • 끄적끄적 (2)
    • Python (17)
    • Django (31)
    • Database (2)
    • Docker (7)
    • 디자인패턴 (2)
    • CS 공부 (12)
      • 알고리즘 (2)
      • 자료 구조 (1)
      • 네트워크 (7)
      • IT 지식 (1)
      • 운영체제 (1)
    • 기타 팁들 (10)
    • Aws (2)
    • 독서 (1)
    • 코딩테스트 공부 (1)
      • 백준 (0)
      • 프로그래머스 (1)
    • DevOps (13)
    • TIL (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 5장 회사에서 하는 랜 구성
  • Batch
  • 모두의 네트워크
  • depends
  • 랜 카드
  • 네트워크
  • 파이썬 클린 코드
  • docker
  • 상속 안티 패턴
  • validate
  • 물리 계층
  • query param
  • dotenv
  • pycharm
  • 책 리뷰
  • preonboarding
  • 전기 신호
  • 완벽한 IT 인프라 구축을 위한 Docker
  • CS 지식
  • fastapi
  • 상속과 컴포지션
  • 7장
  • 컴퓨터 기본 지식
  • poetry
  • 랜과 왠
  • 6장
  • encoding
  • 케이블의 종류
  • cp949
  • pytest

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
r잡초처럼

바른 프로그래밍

Docker Multi-Stage
Docker

Docker Multi-Stage

2023. 4. 21. 22:07

Dockerfile로 이미지를 빌드할 때 꽤나 큰 용량이 소모된다 이때 Multi-stage 를 통해 이미지를 경량화 시킬 수 있다.

일반적으로, Dockerfile을 작성할 때, 한 단계(build stage)에서 애플리케이션을 빌드하고, 또 다른 단계에서 빌드된 애플

리케이션을 실행하는 이미지를 생성하는 방법을 사용한다. 그러나, 이러한 방식은 중간 빌드 결과물과 불필요한 라이

브러리, 의존성 파일 등이 포함된 큰 이미지를 생성할 수 있다.

 

Dockerfile multi-stage를 사용하면, 여러개의 build stage를 이용하여 각각 다른 의존성을 가진 이미지를 생성할 수 있다. 빌드 단계에서 필요한 파일과 라이브러리만 포함하여 최종 이미지를 만들기 때문에 이미지 크기를 최소화 할 수 

있다.

Multi-Stage 적용 전
Multi-Stage 적용한 이미지

그렇다면 이미지를 경량화 한다면 얼마큼 더 줄어들까?

python:3.8 에서 python:3.8-slim 으로 이미지를 바꿨다

이미지 경량화

이미지 경량화 할 때 마주친 문제

  • 경량화 이미지의 경우 psycopg2 의 패키지 설치가 잘 안됐다. 이때 psycopg2-binary 로 패키지를 바꾸니 설치가 잘됐다
  • 이전 스테이지에서 설치된 바이너리 파일을 현재 스테이지에 옮기는 COPY --FROM= 명령에 대한 이해도가 부족해서 그냥 COPY 를 떠버렸다. 그랬더니 위의 아래 이미지처럼 용량이 꽤 크게 나왔다. 위의 같은 경량화 이미지를 썼음에도 약 2배 차이가 났다.

 

'Docker' 카테고리의 다른 글

Docker Compose - 1  (0) 2023.02.23
Docker 명령어 정리 - 2  (0) 2023.01.26
DockerFile 작성하기 - 구성과 명령어 정리 - 1  (0) 2023.01.23
Docker에 대해 알아보자 - 정의, 작동 방식, 사용 이유  (0) 2023.01.22
[Docker] 1. WSL2 에 Docker 개발 환경 구축하기  (0) 2022.11.28
    'Docker' 카테고리의 다른 글
    • Docker Compose - 1
    • Docker 명령어 정리 - 2
    • DockerFile 작성하기 - 구성과 명령어 정리 - 1
    • Docker에 대해 알아보자 - 정의, 작동 방식, 사용 이유
    r잡초처럼
    r잡초처럼
    오늘보다 내일 더 나은 개발자가 되기 위한 노력을 기록하는 블로그 입니다.

    티스토리툴바