docker 이미지 빌드 시간 줄이는 방법

2024. 7. 2. 07:00Container

728x90

  1. 캐시 활용:

    • 자주 변경되지 않는 레이어를 Dockerfile의 앞부분에 배치합니다.
    • docker build --cache-from 옵션을 사용하여 이전 빌드의 캐시를 재사용합니다.
  2. .dockerignore 파일 사용:

    • 불필요한 파일을 제외하여 컨텍스트 크기를 줄입니다.
  3. 멀티 스테이지 빌드:

    • 빌드 단계와 실행 단계를 분리하여 최종 이미지 크기를 줄입니다.
  4. 병렬 빌드:

    • BuildKit을 사용하여 독립적인 단계를 병렬로 실행합니다.
      DOCKER_BUILDKIT=1 docker build .
  5. 경량 베이스 이미지:

    • Alpine 기반 이미지 등 작은 베이스 이미지를 사용합니다.
  6. 레이어 최소화:

    • RUN 명령어를 체이닝하여 레이어 수를 줄입니다.
  7. 의존성 캐싱:

    • 패키지 매니저 파일(예: package.json)만 먼저 복사하고 의존성을 설치합니다.
  8. 로컬 미러 또는 프록시 사용:

    • 패키지 다운로드 속도를 높이기 위해 로컬 미러를 설정합니다.
  9. 빌드 인자 사용:

    • ARG를 사용하여 빌드 시 다양한 설정을 적용할 수 있게 합니다.
  10. 불필요한 도구 제거:

    • 빌드에 필요하지 않은 도구나 라이브러리를 제거합니다.
  11. 효율적인 명령어 사용:

    • COPY 대신 ADD를 사용하여 원격 파일을 직접 추가합니다.
  12. 빌드 컨텍스트 최소화:

    • 빌드에 필요한 파일만 포함하도록 컨텍스트를 구성합니다.

예시 Dockerfile:

# 베이스 이미지 선택
FROM node:14-alpine AS builder

# 작업 디렉토리 설정
WORKDIR /app

# 의존성 파일만 먼저 복사
COPY package*.json ./

# 의존성 설치
RUN npm ci --only=production

# 소스 코드 복사
COPY . .

# 빌드
RUN npm run build

# 실행 단계
FROM node:14-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules

CMD ["node", "dist/main.js"]

'Container' 카테고리의 다른 글

docker 이미지 사이즈 줄이는 방법  (0) 2024.07.01