首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nextjs在production node_env的'.next‘目录中找不到有效的内部版本

Nextjs在production node_env的'.next‘目录中找不到有效的内部版本
EN

Stack Overflow用户
提问于 2018-04-05 23:37:54
回答 4查看 4.9K关注 0票数 24

我在docker中运行我的应用程序,但我的产品构建和启动脚本仅在docker环境中失败。虽然node_env开发在docker环境中运行良好。

以下是我的脚本,它无法构建生产版本并启动服务器。我用的是nodemon和babel

代码语言:javascript
复制
"build:prod": {
      "command": "babel ./src/server/ -d server --presets es2015,stage-2 && next build src",
      "env": {
        "NODE_ENV": "production"
      }
    },
    "start:prod": {
      "command": "PORT=3000 nodemon --watch ./src/server/ ./src/server/server.js --exec babel-node --presets es2015,stage-2",
      "env": {
        "NODE_ENV": "production"
      }
    }

但当我在docker环境中发出同样的命令时:

代码语言:javascript
复制
FROM node:8-alpine

COPY package.json /tmp/package.json

RUN cd /tmp && npm install

RUN mkdir -p /opt/app && cp -a /tmp/node_modules /opt/app

WORKDIR /opt/app

ADD . /opt/app

RUN npm run build:prod

EXPOSE 3000

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

我在docker中得到以下错误:

代码语言:javascript
复制
 > better-npm-run start:prod
site_1      | 
site_1      | running better-npm-run in /opt/app
site_1      | Executing script: start:prod
site_1      | 
site_1      | to be executed: PORT=3000 NODE_ENV=production nodemon --watch ./src/server/ ./src/server/server.js --exec babel-node --presets es2015,stage-2 
site_1      | [nodemon] 1.17.3
site_1      | [nodemon] to restart at any time, enter `rs`
site_1      | [nodemon] watching: /opt/app/src/server/**/*
site_1      | [nodemon] starting `babel-node ./src/server/server.js --presets es2015,stage-2`
site_1      | false 'production'
site_1      | > Could not find a valid build in the '.next' directory! Try building your app with 'next build' before starting the server.
site_1      | [nodemon] app crashed - waiting for file changes before starting...

我将感谢任何帮助,并将很高兴知道我做错了什么。

EN

回答 4

Stack Overflow用户

发布于 2018-04-14 15:04:24

您需要确保没有从主机复制.next目录

代码语言:javascript
复制
ADD . /opt/app

还将添加主机上的.next目录。我会添加.dockerignore,并将.next添加到其中。然后构建并再次运行

票数 1
EN

Stack Overflow用户

发布于 2020-05-28 05:26:34

随着时间的推移,这个问题获得了相当多的额外投票,让我来详细说明一下您在面对上述问题时可能需要考虑的几件事。

版本

请参考官方docs,其中Vercel将Node.js版本10.13 or later列为要求。

使用用于生产的强化映像的

我还建议使用经过生产强化并被证明是安全的映像。使用像Bitnami (why?example)这样的开源图片被认为是很好的做法。请注意,这将解决您的问题,因为现在您不再使用任何本地文件。

保证构建完整性

建议在.dockerignore文件中忽略node_modules以及任何构建工件,并在构建期间挂载yarnnpm的缓存文件夹。这样,您就可以确保为您的映像生成具有正确操作系统绑定的node_modules

票数 1
EN

Stack Overflow用户

发布于 2020-06-24 18:49:34

检查你的.dockerignore

代码语言:javascript
复制
FROM node:latest

# Create app directory
WORKDIR /usr/src/app

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./

RUN npm install pm2 -g
ENV NPM_CONFIG_LOGLEVEL warn
RUN npm install --production

# Show current folder structure in logs
RUN ls -al -R

# Bundle app source
COPY . .

EXPOSE 8080

CMD [ "npm", "start" ]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49676338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档