반응형
이미지 크기를 줄이는 방법: 다단계 도커를 활용하여 효율적으로 이미지를 만든 포스팅
https://www.tomray.dev/nestjs-docker-production
Ultimate Guide: NestJS Dockerfile For Production [2022]
Learn how to write a Dockerfile that creates a production optimized image using the NodeJS Alpine image and multistage builds.
www.tomray.dev
해당 내용을 프로젝트에 맞게 일부 수정한 후 새롭게 이미지를 빌드해보니 이미지 크기가 절반으로 줄어든다.
FROM node:18-alpine AS base
RUN apk add --no-cache curl \
&& curl -sL https://unpkg.com/@pnpm/self-installer | node
# INSTALL DEPENDENCIES FOR DEVELOPMENT (FOR NEST)
FROM base AS deps
WORKDIR /usr/src/app
COPY --chown=node:node package.json pnpm-lock.yaml ./
RUN pnpm install
USER node
# INSTALL DEPENDENCIES & BUILD FOR PRODUCTION
FROM base AS build
WORKDIR /usr/src/app
COPY --chown=node:node --from=deps /usr/src/app/node_modules ./node_modules
COPY --chown=node:node . .
ENV NODE_ENV production
RUN pnpm build
RUN pnpm prune --prod
RUN rm -rf ./.next/cache
USER node
# PRODUCTION IMAGE
FROM base AS production
WORKDIR /usr/src/app
COPY --chown=node:node --from=build /usr/src/app/node_modules ./node_modules
COPY --chown=node:node --from=build /usr/src/app/dist ./dist
EXPOSE 3001
CMD [ "node", "dist/main.js" ]
이후 아래 명령어로 도커 이미지를 생성한다.
$ docker build -t '[Dockerfile Name]' .
반응형
'DevOps 관련 > Docker' 카테고리의 다른 글
[Docker] Mac에서 AWS EC2에 도커올리기 (0) | 2023.09.12 |
---|---|
[Docker] Sveltekit 빌드 시 build폴더 생성 안될 때 (Dockerfile 오류) (0) | 2023.09.11 |
[Docker] Windows 10에서 Docker Desktop 사용 시, 'Cannot enable Hyper-V service' 에러 해결 (0) | 2023.09.10 |
[Docker] DockerHub에 이미지 push하는 방법 (0) | 2023.09.08 |
[Docker] 도커 기본 명령어 모음 (0) | 2023.09.04 |
댓글