在Docker镜像中安装yarn时出现权限问题

5

我所在的开发团队正在为我们正在开发的项目设置环境以进行更新。我想直接说明问题。

在我们的 DockerFile 中,我们使用 RUN npm install -g yarn 安装了 yarn。 但是,在执行一个清空缓存文件的 .sh 文件时,我们遇到了以下错误:

yarn error “EACCESS: permission denied, scandir '/root/.config/yarn/link'

我已经寻找可能的解决方案,我们只发现了一个权宜之计,即给予该目录完全权限:
RUN chmode -R 777 '/root/

我们知道这是不推荐的做法。

有没有人知道更好的答案?我看到过许多关于yarn和docker的问题。

yarn版本为1.9.4

编辑1:

问题在于yarn使用执行此操作的用户编写或读取这些文件,因此解决方案是授予所有用户权限。也许可以以更严格的方式实现?

编辑:

经过多次失败尝试,我们决定只需使用chmod -R 777 ~/.config && chmod -R 777 ~/.cache。这些文件在运行yarn install之前并未创建,由于我们是在每个用户进入系统时触发yarn install,所以变通方法就是为每个用户授予777权限以便让他们写入这些文件。

总之,如果有更好的方案,我会在这里发布答案。

顺便说一下,该系统已被弃用。


你使用的是哪个基础镜像? - sayboras
我不会太担心,因为这是你的Docker容器内部的文件权限问题。 - tkrishtop
3个回答

0

尝试

sudo npm install yarn && yarn install

0

这个好像不起作用,我认为是因为在执行 yarn run 命令之前那些目录没有被创建。 - Gastón Vidal
这就是为什么我不得不使用RUN chmode -R 777 '/root/ - Gastón Vidal
那我更喜欢 chmode -R 777 ~/.config && chmode -R 777 ~/.cache - Sumit
我尝试将行RUN chmode -R 777 /root/替换为chmod -R 777 ~/.config,但最终遇到了相同的问题。 - Gastón Vidal
我无法使其工作,仍在尝试以用户身份访问根文件并收到EACCESS权限被拒绝的错误。 - Gastón Vidal
你使用的基础镜像是什么? - Sumit

-4
我们最终设置了777权限,但该系统已被弃用。

免责声明:极其不建议这样做,如果您有类似的问题,请不要将此作为解决方法。 - Gastón Vidal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接