Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Next.js。docker映像所需的文件_Javascript_Dockerfile_Next.js_Docker Image_Zeit Pkg - Fatal编程技术网

Javascript Next.js。docker映像所需的文件

Javascript Next.js。docker映像所需的文件,javascript,dockerfile,next.js,docker-image,zeit-pkg,Javascript,Dockerfile,Next.js,Docker Image,Zeit Pkg,我正在使用Docker创建一个Next.js项目,但每次运行Docker build,Docker映像都是300MB+。我的目标是缩小docker图像的大小。为此,我开始使用,但它不能正常工作 问题: 对于docker build,Next.js中需要哪些文件?(我在每个教程中都看到了COPY..)如何减小docker图像的大小 我遵循了本教程: Dockerfile: FROM node:lts-alpine as build-env WORKDIR /app COPY . . RUN y

我正在使用Docker创建一个Next.js项目,但每次运行
Docker build
,Docker映像都是300MB+。我的目标是缩小docker图像的大小。为此,我开始使用,但它不能正常工作

问题:

对于
docker build
,Next.js中需要哪些文件?(我在每个教程中都看到了COPY..)
如何减小docker图像的大小

我遵循了本教程:

Dockerfile:

FROM node:lts-alpine as build-env
WORKDIR /app

COPY . .

RUN yarn install --pure-lockfile --ignore-engines
ENV NODE_ENV=production
RUN yarn run build
RUN yarn run pkg

FROM node:alpine

RUN apk update && \
  apk add --no-cache libstdc++ libgcc ca-certificates && \
  rm -rf /var/cache/apk/*

WORKDIR /app

COPY --from=build-env /app/pkg .

ENV NODE_ENV=production

EXPOSE 8080

CMD ./next-app
package.json:

{
  "name": "next-app",
  "bin": "server.js",
  "pkg": {
    "assets": [
      ".next/**/*"
    ],
    "scripts": [
      ".next/**/*.js"
    ]
  },
  "scripts": {
    "test": "jest",
    "dev": "next",
    "build": "next build",
    "start": "NODE_ENV=production node server.js",
    "pkg": "pkg . -t node13-linux-x64 -o pkg"
  },
  "dependencies": {
    "next": "^9.4.0",
    "react": "^16.13.1",
    "react-dom": "^16.13.1"
  },
  "devDependencies": {
    "pkg": "4.4.8",
    "typescript": "^3.9.2"
  }
}

我知道这个问题已经问了5个多月了,但我也遇到了同样的问题

我通过设置一个多级内置docker解决了这个问题,并且只复制运行生产nextjs应用程序所需的文件

我的Dockerfile

# Build the app
FROM node:14-alpine as build
WORKDIR /app

COPY . .
RUN npm ci
RUN npm run build
COPY ./.next ./.next


# Run app
FROM node:14-alpine

# Only copy files required to run the app
COPY --from=build /app/.next ./
COPY --from=build /app/package.json ./
COPY --from=build /app/package-lock.json ./

EXPOSE 3000

# Required for healthcheck defined in docker-compose.yml
# If you don't have a healthcheck that uses curl, don't install it
RUN apk --no-cache add curl

# By adding --production npm's devDependencies are not installed
RUN npm ci --production
RUN ./node_modules/.bin/next telemetry disable

RUN addgroup -g 1001 -S nodejs
RUN adduser -S nextjs -u 1001

USER nextjs
CMD ["npm", "start"]

my package.json的摘录

  "dependencies": {
    "next": "^9.5.5",
    "next-compose-plugins": "^2.2.0",
    "react": "^16.12.0",
    "react-dom": "^16.12.0"
  },