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 |