0

我项目中的一个文件夹是只读的:

ls -la client/cypress
drwxr-xr-x  10 user    staff   320 Nov  2 18:06 .
drwx------   2 root    staff    64 Nov  2 17:58 resource  <--- this one

我在.dockerignore基本目录(上下文)中忽略了它

client/cypress/resource

简单的码头工人定义:

WORKDIR /src
COPY client/ client
CMD ["/bin/bash"]

$ docker build .失败:
error from sender: open client/cypress/resource: permission denied

以 sudo 运行,但为什么 docker 不忽略该文件?如果我忽略包含该文件夹的目录,它工作正常。(我知道我可以对文件进行 chmod,但它是由其他工具以编程方式生成的)

4

1 回答 1

0

资源文件夹的所有权为root:staff,权限为700。这意味着只有root用户能够读取/写入/执行该文件夹。组人员对该文件夹没有任何权限。

使用 sudo 运行将起作用,因为 sudo 使用 root 用户执行命令。

关于.dockerignore文件:它取决于 . dockerignore文件有。如果所有权是root:staff并且该权限是相同640或什至更具限制性,那么如果您执行 docker build 。作为普通用户,该用户无法阅读 . dockerignore文件。

话虽如此,不读取 .dockerignore 文件会转化为忽略该文件及其内容。

于 2021-11-04T00:25:03.547 回答