【问题标题】:jib-maven-plugin - How to set folder permissionjib-maven-plugin - 如何设置文件夹权限
【发布时间】:2021-08-17 06:49:16
【问题描述】:

我正在尝试使用 jib-maven-plugin 构建 docker 映像,我想为特定文件夹设置权限。 如果我使用 docker 文件,配置将如下所示:

FROM xxxxxxxx.com/sandbox/gui-server:1.0.0-SNAPSHOT
USER root
RUN chmod 755 /home/www
USER www

现在我该如何使用 jib-maven-plugin 来实现呢?我相信 jib-maven-plugin

中的 pom.xml
<container>
   <mainClass>${mainClass}</mainClass>
      ...
        ...
      <user>www</user>
</container>

【问题讨论】:

    标签: docker maven maven-jib


    【解决方案1】:
    推荐的答案 Google Cloud

    您需要考虑的第一个问题是为什么必须将基本映像目录(在您的情况下为/home/www)的权限更改为 755。可能是基本映像专门设计用于运行的情况因为我不知道为什么root/home/www 只能被root 读取。或者,如果非 root 用户无法读取该目录没有意义,则可能是应该在基础映像中修复的错误。

    如果您仍想更改基础映像的任意目录的权限,我可以考虑滥用&lt;extraDirectories&gt; feature,如here 所示。但是,我有点不愿意建议将此 hack 作为一个好的解决方法。在许多情况下(尽管不是您的情况),问题的根源可能与权限无关,而是与文件/目录所有权有关,或者与修复应用程序以不改变基础映像中的文件有关。如果文件/目录不是来自基础映像,而是来自 Jib 放置的文件/目录,那么 Jib 所有权扩展 (Maven / Gradle) 可能会解决一些看似与权限相关的问题。

    还可以查看this Stack Overflow question


    对于那些想知道在 Jib 中是否可能提供类似 RUN 的支持(即,实际上使用某些容器运行时在容器内执行命令)的人,我将引用 these comments

    Jib 构建镜像的方式与 Docker CLI 使用 Dockerfile 构建镜像的方式根本不同(可重现与不可重现、声明式与命令式、Docker 和 Dockerfile-less 构建与需要 Docker 守护程序和客户端, 需要 root 权限与否)。 Jib 处于一个非常不同的领域,所以不幸的是,很难支持ONBUILD,除非我们从根本上改变我们关于如何构建图像的固执理念。基本上,我们不会“运行”Dockerfile 指令,尤其是像 RUN 这样执行某些东西的指令。 Jib 不提供/包含 Docker 运行时(这是 Jib 的要点之一)。

    至于运行任意命令,不幸的是,这在很大程度上与 Jib 运行的模式不兼容,因为 Jib 构建镜像的方式与 Docker 的方式根本不同:https://github.com/GoogleContainerTools/jib/issues/1806#issuecomment-505526975 我们以声明性和可重现的方式构建镜像,无需实际上需要有一个运行时组件才能在映像构建时运行映像;运行图像基本上会破坏再现性。所以不幸的是,Jib 很难在图像构建时支持“运行”任意命令。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-02
      • 1970-01-01
      • 2014-09-28
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      • 2023-03-28
      • 2017-10-05
      相关资源
      最近更新 更多