为 Kubernetes 优化的 Nextcloud 发行版本和部署文件

2019-04-13 02:50:50 +08:00
 raysonx

本人维护一个 Kubernetes 小集群,在上面运行 Nextcloud,可惜官方原版的 Nextcloud 容器镜像实在是不太好用。哪里不好用呢?

官方镜像的问题

  1. 官方镜像不是无状态的。Nextcloud 的文件实际存储在镜像中的/usr/src/nextcloud/,而 Web 根目录却是/var/www/html,后者挂载到了一个 Volume。每次启动容器时,都会把 Volume 中的版本号和镜像中的版本号做对比,如果镜像版本比较新或者 Volume 里面没有安装,则调用 rsync 拷贝/usr/src/nextcloud//var/www/html然后自动 migrate 数据库(危险!),否则什么都不做。这使得用户在不清空 Volume 的情况下无法降级,无法通过重建容器修复服务,更无法在不变动上游 nextcloud 版本号的情况下进行滚动更新。
  2. Volume 的权限过于开放,为了能执行自动升级,给了 PHP 完全的写入权限。
  3. 需要容器内的 root 权限,无法在默认安全配置的 OpenShift 平台运行。
  4. 一些默认配置项不适合 Kubernetes 环境,比如会对一些目录的权限作检查,而你可能根本没有权限去控制 Kubernetes Persistent Volume 挂载目录的权限。能写就行了嘛!
  5. 简单"修"了一些小问题,详情见 GitHub 仓库页面。

背景

我在去年曾经给 Nextcloud 提过几个 issues (比如https://github.com/nextcloud/docker/issues/381),他们的开发者大概表示说:官方镜像这么设计是为了让个人或者简单部署时更容易,不是为“大型部署( larger installs )”设计的,建议自行修改镜像。

好吧。

Kube-nextcloud —— 针对 Kubernetes / OpenShift 平台优化(不想说 cloud-native )的 Nextcloud 发行版

最近在重建 kubernetes 集群后,专门抽了些时间修改了官方镜像的 Dockerfile,然后针对新的镜像写了 docker-compose 文件和 Kubernetes 的部署文件。鉴于修改后的镜像和部署文件运行良好,现把它开源共享出来,给需要的朋友们参考使用。

GitHub 链接: https://github.com/vfreex/kube-nextcloud 许可证:AGPLv3 (我也想用 Anti-996 License,但上游用的 AGPLv3 没得选择啊)

Git 仓库根目录下自带docker-compose.yaml,本地启动只需执行docker-compose up -d。Kubernetes 部署文件在deploy/下,Dockerfile 在/images下。

2429 次点击
所在节点    分享创造
1 条回复
clintme
2023-03-05 13:21:37 +08:00
我最近也想研究下这个,mark 一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/554678

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX