'

ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [STUDY08.2] docker dive로 itda도커 분석해보기
    FISA 2026. 1. 6. 08:50

     

    제가 만든 이미지가 얼마나 쓰레기인지 확인해보려구요

     

    일단 도커빌드하면 좀 오래걸리거든요

     

    FROM python:3.11.1-slim
    
    WORKDIR /app
    COPY . .
    
    ENV PYTHONDONTWRITEBYTECODE 1
    ENV PYTHONUNBUFFERED 1
    ENV WATCHFILES_FORCE_POLLING=true
    
    COPY ./backend/requirements.txt .
    
    RUN pip install --upgrade pip && \
        pip install -r requirements.txt
    
    COPY ./backend ./backend 
    CMD ["uvicorn", "backend.main:app", "--host", "0.0.0.0", "--port", "8000","--reload"]

     

    코드는 이렇게생겼어요

     

    1. git clone https://github.com/uooonth/itda.git
    cd itda

    깃클론해줘요

     

    2. 여기에 도커파일이 있어야해요

    3. docker build -t itda . 로 빌드해줘요

    그러면?

     

    이렇게 !!! 레이어가 쌓이는걸 볼 수 있어요!!!

     

    이거 vsc에서 그냥 빌드할땐 안보이거든요? 근데 리눅스에서 하니까 바로보이네요 신기

    4. 다이브는 미리 깔아 뒀어요

     

     

    5. 다이브 실행해보면?

     

     

     

     

    6. 분석

     

     

    일케생겼어요

     

    (1) pip install 레이어가 제일 크다

    - 파이썬 이미지 특성상 어쩔수 없는거같아요. 의존성 레이어를 설치해야 하는것이..

    (2) COPY dir:098f...가 두번째로크다

    - .git이나 테스트코드 캐시 문서 불필요한 파일이 모두 이미지에 들어가요. COPY . . 레이어가 불필요하게 커요 

     

    그래서 이 이미지는 

    멀티스테이지 , .dockerignore, 레이어분리, 캐시활용이 없는 최적화가 안된 파일이라고 볼 수 이써요

     

    그리고

     

    이 레이어가 실제 코드레이어로 볼 수 있어요 forntend있고 src있으니까?

    근데 이 레이어가 지금

    static이미지? stati소스 위에있어요

    이러면 코드변경 일어날 때 static소스도 다 다시 다운하게 되므로 불필요한 그게 일어나겠죠

    그리고 requirements도 소스코드 밑에있어서... 소스코드변경이 일어나면 다 다시깔게 되겠죠;;

    그래서 copy requirements가 위에 있어야해요!!!!! 이런 샤갈 매우못짠코드가나왔네요

     

    일단공부했으니까 최적화하는건 미래의 나에게 미룰게요 ^^

     

     

     

     

     

     

     

     

     

     

     

     

    728x90

    댓글

Designed by Tistory.
티스토리 친구하기