【发布时间】:2021-06-16 06:54:53
【问题描述】:
我有一个这样的 dockerfile:
FROM node:alpine
WORKDIR /app
COPY package.json .
RUN npm install
VOLUME [ "/app/node_modules" ]
COPY . .
ENTRYPOINT [ "npm" ]
CMD [ "run", "dev" ]
我使用以下命令构建我的图像:
docker build -t my-vue-app .
然后我使用以下命令运行我的容器:
docker run -v $(pwd):/app --name app -it --rm my-vue-app
输出权限错误:
error when starting dev server:
Error: EACCES: permission denied, mkdir '/app/node_modules/.vite'
at Object.mkdirSync (node:fs:1024:3)
at optimizeDeps (/app/node_modules/vite/dist/node/chunks/dep-efe32886.js:65416:21)
at runOptimize (/app/node_modules/vite/dist/node/chunks/dep-efe32886.js:69180:54)
at Server.httpServer.listen (/app/node_modules/vite/dist/node/chunks/dep-efe32886.js:69194:23)
at processTicksAndRejections (node:internal/process/task_queues:94:5)
我覆盖了我的入口点来访问我的容器的文件系统来检查权限。
docker run -v $(pwd):/app --name app -it --rm --entrypoint /bin/sh my-vue-app
/app # ls -l | grep node_modules
我可以看到node_modules 的所有者和组是root
输出:
drwxr-xr-x 52 root root 4096 Mar 18 20:04 node_modules
所有其他文件都有所有者和组node
/app # ls -l
total 28
-rw-rw-r-- 1 node node 154 Mar 18 20:02 Dockerfile
-rw-r--r-- 1 node node 337 Mar 18 19:26 index.html
drwxr-xr-x 52 root root 4096 Mar 18 20:04 node_modules
-rw-r--r-- 1 node node 307 Mar 18 19:26 package.json
drwxr-xr-x 2 node node 4096 Mar 18 19:26 public
drwxr-xr-x 4 node node 4096 Mar 18 19:26 src
-rw-r--r-- 1 node node 156 Mar 18 19:26 vite.config.js
所以,我想知道为什么会发生这种情况,我能做些什么来解决它?还有一件事是,当我使用node:lts 而不是node:alpine 时,node_modules 的用户和组仍然是root,但它工作正常。
目前node:lts 是node:14.16.0。
【问题讨论】:
标签: linux bash docker dockerfile file-permissions