(EACCES:权限被拒绝,mkdir'/usr/app/node_modules/.cache)如何创建docker-compose文件以使node_modules成为非根文件夹?

我正在尝试 dockerize 一个简单的 create-react-app 项目。(是运行后的初始项目npx create-react-app test,没有更改文件)。

这个问题似乎是,在新版本做出反应,他们把恼人.eslintcache的根文件夹中/node_modules/.cache,造成问题当容器试图通过运行该应用程序docker-compose

文件

FROM node:alpine

WORKDIR /usr/app

COPY package*.json ./

RUN npm install

RUN chown -R node.node /usr/app/node_modules

COPY . ./

CMD ["npm", "start"]

docker-compose

FROM node:alpine

WORKDIR /usr/app

COPY package*.json ./

RUN npm install

RUN chown -R node.node /usr/app/node_modules

COPY . ./

CMD ["npm", "start"]

容器正在记录此错误消息:

test_1   | Failed to compile.
test_1   | 
test_1   | EACCES: permission denied, mkdir '/usr/app/node_modules/.cache

如您所见,我尝试将node_modules文件夹所有者设置为节点用户( 的默认用户node:alpine),但它不起作用;探索容器,您可以看到该node_modules文件夹仍归以下所有人所有root

drwxrwxr-x    5 node     node          4096 Apr 14 07:04 .
drwxr-xr-x    1 root     root          4096 Apr 14 07:08 ..
-rw-rw-r--    1 node     node           310 Apr 14 06:56 .gitignore
-rw-rw-r--    1 node     node           192 Apr 14 07:30 Dockerfile
-rw-rw-r--    1 node     node          3369 Apr 14 06:56 README.md
drwxrwxr-x 1061 root     root         36864 Apr 14 07:12 node_modules
-rw-rw-r--    1 node     node        692936 Apr 14 06:56 package-lock.json
-rw-rw-r--    1 node     node           808 Apr 14 06:56 package.json
drwxrwxr-x    2 node     node          4096 Apr 14 06:56 public
drwxrwxr-x    2 node     node          4096 Apr 14 06:56 src

我还尝试创建文件夹RUN mkdir -p /usr/app并使用,USER node但最终导致 npm 无法创建node_modules文件夹的问题。

是否有任何解决方法.eslintcache被禁用或node_modulesnode用户拥有?

更新

显然,这是因为我在 Linux 系统上使用Ubuntu和 docker 以 root 身份安装卷。

回答

RUN npm install在 Dockerfile之后添加这一行可以解决这个问题:

RUN mkdir -p node_modules/.cache && chmod -R 777 node_modules/.cache

最终的 Dockerfile

FROM node:alpine

WORKDIR /usr/app

COPY package.json .
RUN npm install

RUN mkdir node_modules/.cache && chmod -R 777 node_modules/.cache

COPY . .

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

然后您不需要将node_modules文件夹从本地目录复制到容器。您可以安全地将其加入书签。


以上是(EACCES:权限被拒绝,mkdir'/usr/app/node_modules/.cache)如何创建docker-compose文件以使node_modules成为非根文件夹?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>