本人维护一个 Kubernetes 小集群,在上面运行 Nextcloud,可惜官方原版的 Nextcloud 容器镜像实在是不太好用。哪里不好用呢?
/usr/src/nextcloud/
,而 Web 根目录却是/var/www/html
,后者挂载到了一个 Volume。每次启动容器时,都会把 Volume 中的版本号和镜像中的版本号做对比,如果镜像版本比较新或者 Volume 里面没有安装,则调用 rsync 拷贝/usr/src/nextcloud/
到/var/www/html
然后自动 migrate 数据库(危险!),否则什么都不做。这使得用户在不清空 Volume 的情况下无法降级,无法通过重建容器修复服务,更无法在不变动上游 nextcloud 版本号的情况下进行滚动更新。我在去年曾经给 Nextcloud 提过几个 issues (比如https://github.com/nextcloud/docker/issues/381),他们的开发者大概表示说:官方镜像这么设计是为了让个人或者简单部署时更容易,不是为“大型部署( larger installs )”设计的,建议自行修改镜像。
好吧。
最近在重建 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
下。
1
clintme 2023-03-05 13:21:37 +08:00 via Android
我最近也想研究下这个,mark 一下
|