Google jib - 更改所有文件和文件夹的所有者

用户10916892

所有应用程序文件和 extraDirectories 都归 root 所有。

/app/libs/
/app/resources/ 
/app/classes/
/app/logs

我想以非 root 用户身份运行该应用程序,并且我希望这些文件/文件夹仅由该用户拥有,而不是由 root 拥有。

有没有办法做到这一点?我发现下面提到的 jib maven 插件可以改变所有者,但它建议不要这样做。有没有更好的方法?

https://github.com/GoogleContainerTools/jib-extensions/tree/master/first-party/jib-ownership-extension-maven
吴灿锡

您想要更改应用程序目录某些部分的所有权的原因是您的应用程序想要在运行时修改某些文件或在其中创建新文件。一般而言,将映像尽可能地构建为不可变的被认为是一种很好的做法。

既然您提到了/app/logs,我怀疑您的应用程序在运行时会生成日志文件。在一些现代容器编排平台(例如 Kubernetes)上,应用程序通常被设计为将日志输出到stdoutstderr.

最佳实践是将应用程序日志写入标准输出 ( stdout) 和标准错误 ( stderr) 流。

想一想:如果您的应用程序/app/logs在一个容器内生成日志文件(将有多个容器运行相同的镜像),您将如何统一收集和监控它们?如果不同的应用程序在不同的文件系统位置生成日志文件怎么办?但更重要的是,如果您的容器崩溃,您只会丢失日志文件。通过将日志写入stdoutstderr,平台将处理管理和关联来自所有 pod 的日志的所有复杂性。

如果您无法更改有关日志文件的应用程序,至少您应该/app/logs在运行时挂载一个卷对于任何容器运行时(无论是 k8s 还是 Docker),这都可以轻松配置。挂载的目录通常是全局可写的,因此您无需更改所有权。但是您仍然需要考虑如何收集和管理日志文件。

同样,如果它不是用于日志文件,而是您的应用程序需要一个文件系统在应用程序目录中创建一个临时文件,并且由于某种原因您无法更改位置,至少您应该尝试挂载一个临时卷,然后再回退到使用您提到的 Jib Ownership Extension 的最后手段。

最后,仔细评估为什么必须首先更改所有权。如果应用程序想要在运行时改变自己,通常这不是容器化的好做法,并且必须有一些根本原因您可能需要以适当的方式解决。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用 PHP 和 Google Drive API 获取基于所有者的所有文件夹和文件

G Suite:Google网上论坛可以成为云端硬盘中文件夹的所有者吗?

使用.Net列出Google Drive V2中的所有文件和文件夹

在Python中列出所有Google云端硬盘文件和文件夹,并保存ID

在DrEdit中列出Google云端硬盘中的所有文件和文件夹

PowerShell更改文件和文件夹的所有者

如何更改文件或文件夹的所有者?

更改文件夹的所有者和权限

更改Linux中文件夹的所有者

无法更改文件夹的所有者

用于检索文件夹中所有文档的注释、突出显示的文本和文档名称的 Google Sheets 脚本

使用 Google Calendar API 更改所有者

匿名文件和文件夹的权限/所有者

强制所有者创建文件和文件夹

从共享的Google云端硬盘文件夹下载所有文件夹

更改根文件夹和子文件夹的所有者(Ubuntu 13.04)

从Java删除“文件夹”中或Google Cloud Bucket中带有前缀的所有文件

google drive API搜索具有给定文件夹ID的所有子文件

无法使用Google云端硬盘API获取文件所有者

取消共享Google云端硬盘上的所有文件,文件夹和子文件夹

更改除一个文件夹外的所有文件夹的所有者

如何重命名文件夹 google colab 中的所有文件

使用 Google Drive Java API 返回文件夹中的所有文件

Google云端硬盘-如何列出指定文件夹中的所有文件

如何在一个Google云端硬盘文件夹中访问所有文件?

如何从google colab提取文件夹(gdrive)中的所有.rar文件?

保存在特定文件夹中后,将所有者更改为文件

使用if命令获取文件夹的所有者

更改所有文件夹和文件的权限