Docker image 경량화

Docker 이미지를 경량화하는 데는 여러 가지 방법이 있습니다. 경량화를 통해 이미지 크기를 줄이고 실행 속도를 향상시킬 수 있습니다. 아래에는 Docker 이미지 경량화를 위한 몇 가지 일반적인 방법을 설명합니다

필요한 패키지 및 파일만 추가

`node.js`의 경우 설치한 `module`이 저장되는 `node_module`을 이미지화 하는데 제외하여 관리하는 것이 경량화 방법 입니다. 

 

컨테이너 레이어 수 줄이기

`Dockerfile` 을 실행시 작동되는 `run` 명령어들을 `&&` 연산자를 통해 하나의 `RUN` 명령어로 변경하여 경량화를 할 수 있습니다. 

RUN \
  apk add --no-cache bash curl git && \
  git clone https://github.com/course-hero/slacktee /slacktee && \
  apk del --no-cache git

 

경량 베이스 이미지 선택

일반 기본이미지를 사용하기 보다는 `alpine`, `slim` 이미지를 사용하여 경량화를 수행 할 수 있습니다. 

FROM node:16-slim

FROM node:16-alpine

 

 

멀티 스테이지 빌드 사용

`FROM` 문법 에서 `AS` 문법을 사용하여 하나의 스테이지를 생성하도록 할 수 있습니다. 

FROM node:16-alpine AS base
LABEL maintainer="FastCampus Park <fastcampus@fastcampus.com>"
LABEL description="Simple server with Node.js"

# Create app directory
WORKDIR /app

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./


FROM base AS build
RUN npm install
# If you are building your code for production
# RUN npm ci --only=production


FROM base AS release
COPY --from=build /app/node_modules ./node_modules
# Bundle app source
COPY . .

EXPOSE 8080
CMD [ "node", "server.js" ]

 

 

 

'Infra > Docker' 카테고리의 다른 글

Docker Ubuntu Jenkins 설치 및 설정  (0) 2023.09.29
Docker docker-compose  (0) 2023.09.26
Docker image 압축 및 풀기, Docker Hub 활용  (0) 2023.09.26
Docker Image build  (0) 2023.09.26
Docker Log  (0) 2023.09.25