Docker run으로 Next.js 실행
개인 작업 로그입니다.
만들기
CRN에서 자습서를 따라 앱 만들기
Next의 getStaticProps 주변을 마스터했습니다. 만들어 온 프로젝트를 움직인다.
이 기사를 참고로
Dockerfile 걸기
Node Version은 이전에 React를 실행했습니다.
13.12.12.0-알핀
사용
기사 코드는
package.json
"scripts": {
"dev": "next",
"build": "next build",
"start": "next start"
},
Dockerfile 쓰기
FROM node:10
# Setting working directory. All the path will be relative to WORKDIR
WORKDIR /usr/src/app
# Installing dependencies
COPY package*.json ./
RUN npm install
# Copying source files
COPY . .
# Building app
RUN npm run build
# Running the app
CMD [ "npm", "start" ]
FROM node:13.12.12.0-alpine
WORKDIR /usr/src/app
COPY package*json ./
RUN npm install
COPY . .
RUN npm run build
CMD [ 'npm', 'run', 'dev' ]
Docker build로 이미지 만들기
docker build -t kaede0902/docker-nextjs .
Sending build context to Docker daemon 99.16MB
Step 1/7 : FROM node:13.12.12.0-alpine
manifest for node:13.12.12.0-alpine not found:
Sending build context to Docker daemon 165.9MB
Step 1/7 : FROM node:12
---> 1fa6026dd8bb
Step 2/7 : WORKDIR /usr/src/app
---> Using cache
---> 1951ed5d38b0
Step 3/7 : COPY package*json ./
---> 69929aec19da
Step 4/7 : RUN npm install
---> Running in 03aa10e0801f
info - Finalizing page optimization... [14/1853]
Page Size First Load JS
┌ ● / 632 B 69.6 kB
├ /_app 0 B 58.5 kB
├ ○ /404 309 B 58.8 kB
├ λ /api/hello 0 B 58.5 kB
└ ● /posts/[id] 445 B 69.4 kB
├ /posts/pre-rendering
└ /posts/ssg-ssr
+ First Load JS shared by all 58.5 kB
├ chunks/hogehogehogehoge.b1b405.js 10.3 kB
├ chunks/framework.cb05d5.js 39.9 kB
├ chunks/main.afa405.js 7.28 kB
├ chunks/pages/_app.5a16a1.js 294 B
├ chunks/webpack.e06743.js 751 B
└ css/hogehogehogehogehoge.css 259 B
λ (Server) server-side renders at runtime (uses getInitialProps or getServerSideProps)
○ (Static) automatically rendered as static HTML (uses no initial props)
● (SSG) automatically generated as static HTML + JSON (uses getStaticProps)
(ISR) incremental static regeneration (uses revalidate in getStaticProps)
Step 7/7 : CMD [ 'npm', 'run', 'dev' ]
---> Running in ahogeahoge
Removing intermediate container ahogeahoge
---> hogehoge1818
Successfully built hogehoge1818
Successfully tagged kaede0902/docker-nextjs:latest
Container를 이미지로 run 한다
docker run -d -p 3333:3000 <your_username>/docker-nextjs:latest
docker run -d -p 3333:3000 kaede0902/docker-nextjs:latest
youridyouridyourid
흠, Docker로 움직이고 있는 실감이 솟지 않아...
우선 터미널의 모든 창에서 npm run dev를 실행하지 않았고, 이것은 Docker를 사용하여 움직입니다.
요약
이번 절차로서는
Dockerfile 만들기
된다.
그렇게 생각하기 위해 Docker events에서 지금 움직이고있는 컨테이너를 마무리합니다.
움직이지 않니? ? ? ?
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
4baeb6e08587 kaede0902/docker-nextjs:latest "docker-entrypoint.s…" 23 minutes ago Exited (2) 23 minutes ago
gifted_zhukovsky
c7f641e51856 kaede0902/node-web-app "docker-entrypoint.s…" 2 months ago Exited (137) 2 months ago
docker run -d -p 80:3000 kaede0902/docker-nextjs:latest
8c7abf96d0223173844524fb492078efd78f44a7fb867ebcb2f57ec00a4b09f4
docker: Error response from daemon: Ports are not available: listen tcp 0.0.0.0:80: bind: address already in use.
80 버림
docker log 보기
docker logs -f a79d015ebc5417e8e2104326e8014c9212c174720bf81a458e5c6b8002e32be1
/bin/sh: 1: [: npm,: unexpected operator
FROM node:12
WORKDIR /usr/src/app
COPY package*json ./
RUN npm install
COPY . .
RUN npm run build
CMD [ 'npm', 'start' ]
Dockerfile 수정
docker build -t kaede0902/docker-nextjs .
Successfully tagged kaede0902/docker-nextjs:latest
다시 이미지 빌드
docker run -d -p 3333:3000 kaede0902/docker-nextjs:latest
여전히 3333에서 움직이지 않습니다.
CMD [ 'npm', 'start' ]
만약 싱글 쿠웨이트이기 때문에
주석
exec 형식은 JSON 배열로 구문 분석됩니다. 즉, 문자를 둘러싸는 것은 싱글 쿼트(‘)가 아니고 더블 쿼트(’)를 사용해야 합니다.
JS와 다르다! ! ! 함정이다! ! !
Dockerfile을 다시 작성하고 다시
Successfully built d07c2f0df820
Successfully tagged kaede0902/docker-nextjs:latest
docker run -d -p 3333:3000 kaede0902/docker-nextjs:latest
99529632c37190826d390abd38af4e49bee4875d8404e3cef996e3678f857c3c
움직였다!
Reference
이 문제에 관하여(Docker run으로 Next.js 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kaede0902/items/eb5b68edf4e6330023d5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)