Jib为临时文件创建文件夹并更改文件夹所有权



我想在春季启动应用程序中创建临时文件。我使用JIB构建图像,并将它们部署在kubernetes中。当我尝试创建临时文件时,我收到了一个错误,因为容器是由非root用户启动的。

现在,我正在寻找一种变通方法,允许我的应用程序将文件保存在映像的文件系统中。我看到了JIB的这个扩展,它提供了更改目录所有权的可能性。我已经尝试过很多次使用不同的配置来自己实现它,但所有的尝试都失败了。这里是我的配置,它也不能很好地工作:

jib {
from.image = "..."
to.image = "..."
container {
user = '1000'
}
extraDirectories {
paths {
path {
from = 'export'
into = '/app/export'
}
}
}
pluginExtensions {
pluginExtension {
implementation = 'com.google.cloud.tools.jib.gradle.extension.ownership.JibOwnershipExtension'
configuration {
rules {
rule {
glob = 'app/export/**'
ownership = '1000'
}
}
}
}
}
}

有没有更方便的方法来达到我的目标,或者我在配置中错过了一些重要的东西?

UPD:起重臂版本为3.2.0

path.into用于extraDirectories时,我无法使其工作。我怀疑这是Jib的一个错误(或当前的技术限制(。

也就是说,对我来说有效的是,不用设置path.into,而是用所需的布局来构建额外的目录。例如,使用以下目录结构,

<project root>/jib-extra/app/export

你会有

extraDirectories.paths = ['jib-extra']
pluginExtensions {
pluginExtension {
implementation = 'com.google.cloud.tools.jib.gradle.extension.ownership.JibOwnershipExtension'
configuration {
rules {
rule {
// must be absolute path starting with '/'
glob = '/app/export'
ownership = '1000'
}
// if you have files under /app/export
rule {
glob = '/app/export/**'
ownership = '1000'
}
}
}

最后,我认为在运行时安装卷可能是您的另一种选择?

最新更新