ETC
Docker Image 사이즈 줄이기 (멀티 스테이지 빌드)
hjkang
2024. 3. 22. 14:52
Nuxt3로 개발한 프로젝트를 빌드하니 이미지 사이즈가 1.5GB가 되었다.
Nginx로만 빌드하면 이미지 사이즈가 200MB 이지만,
난 SSR을 사용해야하기 때문에 Node로 말아주는 작업이 필요하였고, 그 결과 이미지 사이즈가 1.5GB가 되었다.
사이즈가 너무 크면 빌드할 때 문제가 될 수 있으니 이미지 사이즈를 줄여보자!
1. Node 버전 변경
node:18 버전 -> node:18-alpine으로 변경
Dockerfile
// Before
FROM node:18
// After
FROM node:18-alpine
2. .dockerignore 추가
Docker에서 제외되어도 되는 폴더, 파일 제외
.dockerignore
node_modules
.nuxt
.git
dist
3. Docker 멀티 스테이지 빌드
Dockerfile
FROM node:18-alpine as build
#ARG PORT=80
WORKDIR /app
COPY package.json /app
RUN npm install
COPY . /app
RUN npm run build
RUN npm prune
FROM node:18-alpine as prod
WORKDIR /app
COPY --from=build /app/.output /app/.output
#EXPOSE 80
#ENV PORT=80
CMD ["node", ".output/server/index.mjs"]