提问者:小点点

jib maven插件-如何设置文件夹权限


我正在尝试使用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插件实现这一点?我相信在波姆的某个地方。jib maven插件中的xml

<container>
   <mainClass>${mainClass}</mainClass>
      ...
        ...
      <user>www</user>
</container>

共1个答案

匿名用户

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

如果您仍然想更改基本映像的任意目录的权限,我可以想到滥用

还可以查看这个堆栈溢出问题。

对于那些想知道Jib中是否有类似RUN的支持的人(即,使用某个容器运行时在容器内实际执行命令),我将引用以下评论:

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很难在映像构建时支持“运行”任意命令。