이재홍의 언제나 최신 Docker - Unit 10.2 Next.js Dockerfile 작성하기

저작권 안내
  • 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
  • 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.

Docker로 Next.js 애플리케이션 구축하기

이재홍 http://www.pyrasis.com

Next.js Dockerfile 작성하기

Node.js 설치가 끝났으니 create-next-app으로 예제 Next.js 애플리케이션을 생성합니다.

  • Ok to proceed? (y): y를 입력합니다.
  • ✔ What is your project named? …: exampleapp을 입력합니다.
~$ npx create-next-app --typescript --use-npm
Need to install the following packages:
  create-next-app@12.3.1
Ok to proceed? (y) y
✔ What is your project named? … exampleapp
Creating a new Next.js app in /home/pyrasis/exampleapp.

Using npm.

Installing dependencies:
- react
- react-dom
- next


added 18 packages, and audited 19 packages in 9s

2 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

Installing devDependencies:
- eslint
- eslint-config-next
- typescript
- @types/react
- @types/node
- @types/react-dom


added 217 packages, and audited 236 packages in 29s

77 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

Success! Created exampleapp at /home/pyrasis/exampleapp

먼저 .dockerignore 파일이 필요합니다. 다음 내용을 .dockerignore로 저장합니다.

~/exampleapp/.dockerignore
node_modules

이제 다음 내용을 Dockerfile로 저장합니다.

~/exampleapp/Dockerfile
FROM node:16-alpine

ADD ./ /var/www/exampleapp
WORKDIR /var/www/exampleapp
RUN npm install
RUN npm run build

CMD ["npm", "run", "start"]

여기서는 node:16-alpine 이미지를 사용하도록 하겠습니다.

  • FROM으로 node:16-alpine를 기반으로 이미지를 생성하도록 설정합니다.
  • Next.js 애플리케이션 디렉터리를 /var/www/exampleapp 디렉터리에 추가합니다.
  • WORKDIR로 /var/www/exampleapp를 작업 디렉터리로 설정합니다.
  • RUN으로 npm install을 실행하여 패키지를 설치하고, npm run build를 실행하여 Next.js 앱을 빌드합니다.
  • CMD로 npm run start를 실행하도록 설정합니다.

docker build 명령으로 이미지를 생성합니다.

~/exampleapp$ sudo docker build --tag nextjs .

이제 docker run 명령으로 컨테이너를 생성해봅니다.

~/exampleapp$ sudo docker run -it --rm -p 3000:3000 nextjs
  • --rm 옵션은 컨테이너를 종료하면 컨테이너를 바로 삭제합니다.

웹 브라우저에서 http://<컨테이너 IP 주소 또는 도메인>:3000으로 접속해봅니다(Docker Desktop에서 실행했다면 http://127.0.0.1:3000입니다).

Welcome to Next.js! 화면이 표시되면 Next.js 앱이 정상적으로 실행된 것입니다. 확인이 끝났으면 Ctrl+C를 눌러 Next.js 앱을 종료합니다.


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

2022-10-03