docker 이미지 빌드 시간 줄이는 방법
2024. 7. 2. 07:00ㆍContainer
728x90
반응형
캐시 활용:
- 자주 변경되지 않는 레이어를 Dockerfile의 앞부분에 배치합니다.
docker build --cache-from
옵션을 사용하여 이전 빌드의 캐시를 재사용합니다.
.dockerignore 파일 사용:
- 불필요한 파일을 제외하여 컨텍스트 크기를 줄입니다.
멀티 스테이지 빌드:
- 빌드 단계와 실행 단계를 분리하여 최종 이미지 크기를 줄입니다.
병렬 빌드:
- BuildKit을 사용하여 독립적인 단계를 병렬로 실행합니다.
DOCKER_BUILDKIT=1 docker build .
- BuildKit을 사용하여 독립적인 단계를 병렬로 실행합니다.
경량 베이스 이미지:
- Alpine 기반 이미지 등 작은 베이스 이미지를 사용합니다.
레이어 최소화:
- RUN 명령어를 체이닝하여 레이어 수를 줄입니다.
의존성 캐싱:
- 패키지 매니저 파일(예: package.json)만 먼저 복사하고 의존성을 설치합니다.
로컬 미러 또는 프록시 사용:
- 패키지 다운로드 속도를 높이기 위해 로컬 미러를 설정합니다.
빌드 인자 사용:
ARG
를 사용하여 빌드 시 다양한 설정을 적용할 수 있게 합니다.
불필요한 도구 제거:
- 빌드에 필요하지 않은 도구나 라이브러리를 제거합니다.
효율적인 명령어 사용:
COPY
대신ADD
를 사용하여 원격 파일을 직접 추가합니다.
빌드 컨텍스트 최소화:
- 빌드에 필요한 파일만 포함하도록 컨텍스트를 구성합니다.
예시 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 |
---|