【问题标题】:Permissions issue when installing yarn in a docker image在 docker 映像中安装 yarn 时的权限问题
【发布时间】:2019-01-13 11:13:43
【问题描述】:

我的开发团队目前正在为我们正在开发的项目的更新设置环境。我直奔主题。

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

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

我一直在寻找可能的修复方法,但我们只找到了一种解决方法,即授予该目录的完全权限:

RUN chmode -R 777 '/root/

而且我们知道这是非常不推荐的。 有人知道更好的答案吗?我在 yarn 和 docker 上看到过很多这样的问题。

Yarn 版本是 1.9.4

编辑1: 问题是纱线与执行此操作的用户一起写入或读取这些文件,因此解决方案是向所有用户授予权限。也许以更严格的方式?

编辑:

在多次失败后,我们决定只使用 chmode -R 777 ~/.config && chmode -R 777 ~/.cache 直到我们运行 yarn install 后才创建这些文件,这是由于我们开发系统的方式,每次用户进入系统时触发。所以解决方法是只给每个用户 777 权限,以便让他们写入这些文件。

无论如何,如果有更好的结果,我会在这里发布答案。

顺便说一句,系统被弃用了

【问题讨论】:

  • 你使用的是哪个基础镜像?
  • 我不会担心那个,因为它是文件权限inside你的docker容器。

标签: docker permissions yarnpkg


【解决方案1】:

dockerfile试试这个

USER root

RUN npm install -g yarn

USER [user name]

RUN chown -R [user name] ~/.config && chown -R [user name] ~/.cache

https://docs.npmjs.com/getting-started/fixing-npm-permissions

【讨论】:

  • 这不起作用,我认为是因为在我执行 yarn run 之前不会创建这些目录。
  • 这就是为什么我必须使用 RUN chmode -R 777 '/root/
  • 那我更喜欢chmode -R 777 ~/.config && chmode -R 777 ~/.cache
  • 我尝试将 RUN chmode -R 777 /root/ 行替换为 chmod -R 777 ~/.config 并以同样的问题结束
  • 我无法让它工作,我仍然试图以用户身份访问根文件并获得 EACCESS 权限被拒绝。
【解决方案2】:

试试

sudo npm install yarn && yarn install

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 免责声明:这是极不推荐的,所以如果你有类似的问题,不要使用它作为解决方法。
    猜你喜欢
    • 1970-01-01
    • 2022-06-27
    • 2019-04-16
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    相关资源
    最近更新 更多