我有一个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文件夹),设置卷等方式进行了尝试。
1条答案
按热度按时间e5njpo681#
此问题可能与文件权限有关。请尝试向Dockerfile添加USER指令,以非root用户身份运行命令。
这应确保运行命令的用户具有访问容器中文件的必要权限。