NextJS npm运行dev,在Docker构建中查找.next文件夹,.next文件夹不存在

b5lpy0ml  于 2022-11-30  发布在  Docker
关注(0)|答案(1)|浏览(326)

我有一个Docker compose设置来运行我的NextJS应用程序在开发中。它工作正常,我不知道什么变化。当Docker映像运行npm run dev命令时,我收到这个错误:
网络-网络-1|就绪-已启动服务器,位于0.0.0.0:3000,url:网站名称:|[错误:EACCES:权限被拒绝,打开“/app/. next/package.json ']{ nti-web-web-1|错误编号:-13,网络1|代码:'EACCES',nti-web-web-1|系统调用:'打开',nti-web-web-1|下一个页面:/app/app/app/app/app/|} nti-web-web-1退出,代码为1
下面是我的Docker文件:

FROM node:18-alpine
WORKDIR /app
COPY ./package.json .
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm","run","dev"]

下面是我的合成文件:

version: "3"
services:
  web:
    build:
      context: .
      dockerfile: Dockerfile.dev
    volumes:
      - ./:/app
      - /app/node_modules
    ports:
      - 3000:3000
    working_dir: /app

下面是我的package.json的脚本部分:

"scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "eslint --fix pages/ components/ hooks/ data/ __mocks__/ --ext .jsx,.js",
    "check": "pnpm run lint && pnpm jest",
    "analyze": "cross-env ANALYZE=true next build",
    "analyze:server": "cross-env BUNDLE_ANALYZE=server next build",
    "analyze:browser": "cross-env BUNDLE_ANALYZE=browser next build",
    "test": "jest --coverage --coverageDirectory=output/coverage/jest"
  },

我已经通过改变工作目录,改变文件权限(没有帮助,在docker构建过程之后没有.next文件夹),设置卷等方式进行了尝试。

e5njpo68

e5njpo681#

此问题可能与文件权限有关。请尝试向Dockerfile添加USER指令,以非root用户身份运行命令。

FROM node:18-alpine
WORKDIR /app
COPY ./package.json .
RUN npm install
COPY . .
EXPOSE 3000
USER node
CMD ["npm","run","dev"]

这应确保运行命令的用户具有访问容器中文件的必要权限。

相关问题