본문 바로가기
도커

Next js docker 설정

by eclipse7727 2021. 11. 25.

도커가 익숙하지 않으시다면 아래 블로그에서 도커란 무엇인가를 읽어보시길 추천합니다.

 

초보를 위한 도커 안내서 - 도커란 무엇인가?

도커를 처음 접하는 시스템 관리자나 서버 개발자를 대상으로 도커 전반에 대해 얕고 넓은 지식을 담고 있습니다. 도커가 등장한 배경과 도커의 역사, 그리고 도커의 핵심 개념인 컨테이너와 이

subicura.com

 

 

Deployment | Next.js

Deploy your Next.js app to production with Vercel and other hosting options.

nextjs.org

 

 

Error message "error:0308010C:digital envelope routines::unsupported"

I created the default IntelliJ IDEA React project and got this: Error: error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:67:19) at Object.createHa...

stackoverflow.com

node 17버전 에서는 아래와 같은 오류가 납니다.

16으로 바꾸시거나 위의 해결 방법을 적용해 보시길 바랍니다.

아래 코드는 node 16을 사용했습니다.

 

Dockerfile

# lock 파일 복제 후 , lock-file 기반으로 설치 (옵션 --frozen-lockfile)
# node:alpine으로 설정 시 node 17버전이 설치되는데 오류가 발생합니다.
# node:16-alpine 설정하시길 권장합니다.
FROM node:16-alpine AS deps
# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
RUN apk add --no-cache libc6-compat
WORKDIR /app
COPY package.json yarn.lock ./
RUN yarn install --frozen-lockfile

# deps 에서 설치한 파일중 node_modules만 가져온걸 볼 수 있다.
# 옵션 --production devDependencies에 있는 모듈 설치 안함
# 옵션 --ignore-scripts 실행중 다른 스크립트 비활성화
# 옵션 --prefer-offline 네트워크 연결 없이 오프라인으로 install 진행
FROM node:16-alpine AS builder
WORKDIR /app
COPY . .
COPY --from=deps /app/node_modules ./node_modules
RUN yarn build && yarn install --production --ignore-scripts --prefer-offline

# Production image, copy all the files and run next
FROM node:16-alpine AS runner
WORKDIR /app

ENV NODE_ENV production

# os 사용자 추가
RUN addgroup -g 1001 -S nodejs
RUN adduser -S nextjs -u 1001

# builder 에서 복사해야할 파일이 있다면 추가하면 된다. 
# COPY --from=builder /app/next.config.js ./
COPY --from=builder /app/public ./public
COPY --from=builder --chown=nextjs:nodejs /app/.next ./.next
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./package.json

USER nextjs

# 외부 포트 사용한다는 알림 없어도 상관없음
EXPOSE 3000

ENV PORT 3000

CMD ["node_modules/.bin/next", "start"]​

 

반응형

'도커' 카테고리의 다른 글

Docker - Dockerfile  (0) 2022.06.19
Docker - Container, Image  (0) 2022.06.19
Docker 설치 (window, linux)  (0) 2022.06.19
Docker 그게 뭔데?  (0) 2022.06.19
docker mysql 세팅  (0) 2021.12.30

댓글