2023.06.21 - [Amazon Web Services(AWS)] - AWS] Next.js Spring Boot 도메인 연결 및 배포
AWS] Next.js Spring Boot 도메인 연결 및 배포
Next.js 프로젝트를 S3과 CloudWatch를 사용하여 배포하지 않고, EC2에 띄운 뒤 도메인을 적용하여 배포 현재 상황 EC2 인스턴스는 Ubuntu 20.04 이미지를 사용 FE 인스턴스 : Next.js 프로젝트를 pm2를 사용하
mjkim.tistory.com
이전 글에서 Dockerfile로 EC2에 배포하였으나 Docker image 용량이 너무 커서, Dockerfile 경량화를 통해 Docker image 크기를 줄이고자 하였다.
1. 기존 코드
FROM node:16.13.2-alpine
# Directory 지정
WORKDIR /
# Install dependencies
COPY package.json ./
COPY yarn.lock ./
RUN yarn
# 필요한 모든 파일을 복사
COPY . .
# Build
RUN yarn add sharp
RUN yarn build
EXPOSE 3000
CMD ["yarn", "start"]

2. 수정한 코드
Dockerfile
FROM node:18-alpine AS base
# Stage 1: Install dependencies
FROM base AS deps
RUN apk add --no-cache libc6-compat
WORKDIR /
# Install dependencies
COPY package.json ./
COPY yarn.lock ./
RUN yarn --frozen-lockfile
RUN rm -rf ./.next/cache
# Stage 2: Build the app
FROM base AS builder
WORKDIR /
COPY . .
RUN yarn add sharp
RUN yarn build
# Stage 3: Run the production
FROM base AS runner
WORKDIR /
ENV NODE_ENV=production
COPY --from=builder package.json ./
COPY --from=builder yarn.lock ./
COPY --from=builder next.config.js ./
COPY --from=builder public ./public
COPY --from=builder .next ./.next
COPY --from=builder node_modules ./node_modules
EXPOSE 3000
CMD ["yarn", "start"]
.dockerignore
node_modules
*.DS_Store
.next
README.md
LICENSE
.vscode

결과: 약 2.2GB 감소
참고 링크
1. Reduce Docker Image size for your Next.js App: https://javascript.plainenglish.io/reduce-docker-image-size-for-your-next-js-app-bcb65d322222
2. Next.js 프로젝트 docker 배포 + 이미지 크기 줄이기 https://velog.io/@jadenkim5179/Next.js-프로젝트-docker-배포-이미지-크기-줄이기
3. Creating a Docker Image of Your Nextjs App https://www.locofy.ai/blog/create-a-docker-image-of-your-nextjs-app
'멘질멘질] 2023 졸업 프로젝트' 카테고리의 다른 글
Junit5] @CreatedDate NullPointer Exception (0) | 2023.07.22 |
---|---|
Ubuntu] Docker 용량 줄이기 (0) | 2023.06.25 |
Spring Boot] Google, KaKao 로그인/회원가입 처리 및 추가 데이터 입력받기 (0) | 2023.06.17 |
JWT] Secret key 랜덤 생성 (0) | 2023.06.16 |
Spring Boot] 406 Not Acceptable 오류 (0) | 2023.06.13 |
2023.06.21 - [Amazon Web Services(AWS)] - AWS] Next.js Spring Boot 도메인 연결 및 배포
AWS] Next.js Spring Boot 도메인 연결 및 배포
Next.js 프로젝트를 S3과 CloudWatch를 사용하여 배포하지 않고, EC2에 띄운 뒤 도메인을 적용하여 배포 현재 상황 EC2 인스턴스는 Ubuntu 20.04 이미지를 사용 FE 인스턴스 : Next.js 프로젝트를 pm2를 사용하
mjkim.tistory.com
이전 글에서 Dockerfile로 EC2에 배포하였으나 Docker image 용량이 너무 커서, Dockerfile 경량화를 통해 Docker image 크기를 줄이고자 하였다.
1. 기존 코드
FROM node:16.13.2-alpine
# Directory 지정
WORKDIR /
# Install dependencies
COPY package.json ./
COPY yarn.lock ./
RUN yarn
# 필요한 모든 파일을 복사
COPY . .
# Build
RUN yarn add sharp
RUN yarn build
EXPOSE 3000
CMD ["yarn", "start"]

2. 수정한 코드
Dockerfile
FROM node:18-alpine AS base
# Stage 1: Install dependencies
FROM base AS deps
RUN apk add --no-cache libc6-compat
WORKDIR /
# Install dependencies
COPY package.json ./
COPY yarn.lock ./
RUN yarn --frozen-lockfile
RUN rm -rf ./.next/cache
# Stage 2: Build the app
FROM base AS builder
WORKDIR /
COPY . .
RUN yarn add sharp
RUN yarn build
# Stage 3: Run the production
FROM base AS runner
WORKDIR /
ENV NODE_ENV=production
COPY --from=builder package.json ./
COPY --from=builder yarn.lock ./
COPY --from=builder next.config.js ./
COPY --from=builder public ./public
COPY --from=builder .next ./.next
COPY --from=builder node_modules ./node_modules
EXPOSE 3000
CMD ["yarn", "start"]
.dockerignore
node_modules
*.DS_Store
.next
README.md
LICENSE
.vscode

결과: 약 2.2GB 감소
참고 링크
1. Reduce Docker Image size for your Next.js App: https://javascript.plainenglish.io/reduce-docker-image-size-for-your-next-js-app-bcb65d322222
2. Next.js 프로젝트 docker 배포 + 이미지 크기 줄이기 https://velog.io/@jadenkim5179/Next.js-프로젝트-docker-배포-이미지-크기-줄이기
3. Creating a Docker Image of Your Nextjs App https://www.locofy.ai/blog/create-a-docker-image-of-your-nextjs-app
'멘질멘질] 2023 졸업 프로젝트' 카테고리의 다른 글
Junit5] @CreatedDate NullPointer Exception (0) | 2023.07.22 |
---|---|
Ubuntu] Docker 용량 줄이기 (0) | 2023.06.25 |
Spring Boot] Google, KaKao 로그인/회원가입 처리 및 추가 데이터 입력받기 (0) | 2023.06.17 |
JWT] Secret key 랜덤 생성 (0) | 2023.06.16 |
Spring Boot] 406 Not Acceptable 오류 (0) | 2023.06.13 |