微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Docker:npm run start 导致错误,EACCES:权限被拒绝,打开'/home/node/node_modules/.cache/.eslintcache

如何解决Docker:npm run start 导致错误,EACCES:权限被拒绝,打开'/home/node/node_modules/.cache/.eslintcache

我创建了一个 react 应用程序,并尝试在 docker 容器上运行它,并尝试使用卷(将容器内的内容与外部文件映射),之前一切正常,但现在面临共享的问题。 任何人都可以帮助我吗?这是一个权限问题,但不知道如何解决。 root 用户可以访问 node_modules 文件夹。如何授予节点用户访问权限?

我的 docker 文件

FROM node:alpine

USER node
workdir '/home/node'

copY package.json .
RUN npm install

copY . .

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

使用的命令:

docker build -t frontend -f Dockerfile.dev .
docker run -p 3000:3000 -v /home/node/node_modules -v $(pwd):/home/node frontend:latest

project structure

错误

enter image description here

在容器中访问:

~ $ ls -l
total 1488
-rw-rw-r--    1 node     node           124 Jun 20 08:37 Dockerfile.dev
-rw-rw-r--    1 node     node          3369 Jun 17 18:25 README.md
drwxr-xr-x    3 node     node          4096 Jun 17 18:45 build
-rw-rw-r--    1 node     node           230 Jun 20 06:56 docker-compose.yml
drwxrwxr-x 1041 root     root         36864 Jun 20 19:15 node_modules
-rw-rw-r--    1 node     node       1457680 Jun 18 18:28 package-lock.json
-rw-rw-r--    1 node     node           811 Jun 17 18:26 package.json
drwxrwxr-x    2 node     node          4096 Jun 17 18:25 public
drwxrwxr-x    2 node     node          4096 Jun 17 18:25 src

解决方法

很明显,容器中的 node_modules 文件夹是在 npm install 步骤中由 root 用户构建的,因此以 root 为用户。 这就是我们在设置节点用户时无法访问该文件夹的原因。 要解决这个问题,我们必须首先使用root用户,我们必须在将文件从本地目录复制到图像时授予节点用户权限,然后将节点设置为用户,如下所示:

COPY --chown=node:node package.json .
RUN npm install

COPY --chown=node:node . .
USER node

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?