相信大家都有过使用知识库或在线文档编辑的经历。飞书、钉钉文档、百度知识库等产品都提供了word、excel等office文档的创建和编辑能力。onlyoffice就是一套可以查看并编辑文本文件、电子表格和演示文稿的在线办公软件,社区版可以免费使用。本篇就将基于minikube来实现onlyoffice的本地环境部署。
本地部署环境为MacOS 15.5 (24F74),Apple M4芯片。
onlyoffice文档(英文名onlyoffice Docs ONLYOFFICE - 云端办公应用 | ONLYOFFICE)是由Ascensio System SIA公司开发的一套在线办公软件,可以查看并编辑文本文件、电子表格和演示文稿,无需安装任何其他软件。也可以查看PDF 文件,兼容开放XML格式Office文档:.docx、.pptx、.xlsx,并且支持多人实时协同编辑。
Minikube是轻量级的Kubernetes实现(欢迎! | minikube 中文),可在本地计算机上创建 VM 并部署仅包含一个节点的简单集群。Minikube 可用于 Linux , macOS 和 Windows 系统。Minikube CLI提供了用于引导集群工作的多种操作,包括启动、停止、查看状态和删除。
Minikube 支持多种虚拟机驱动程序,如 VirtualBox、HyperV 和 KVM2。由于 Minikube 是 Kubernetes 世界中相对成熟的解决方案,它支持的功能列表令人印象深刻,包括负载均衡器、多集群、节点端口、持久卷、入口、仪表板和容器运行时等。
minikube启动命令
两种方式:1、参照minikube官网的安装说明,curl下载最新的minikube稳定版,并使用下图提供的命令执行安装:
2、万能的homebrew
执行如下命令安装即可:
brew install minikube
等待安装完成后,执行minikube start,启动信息如下:
完成之后,就可以使用kubectl get pods等命令查看nodes、pods等k8s集群信息了,非常方便。
官网提供了支持windows、mac等设备的安装包,以mac为例,直接下载.dmg包后点击安装即可。但这种方式显然不符合我们集群部署的目标,所以仅作为第一步试用。
经典的三步操作:1、拉镜像
docker pull onlyoffice/documentserver:latest
2、启动容器(带端口映射和数据持久化)
OnlyOffice 需要持久化存储配置、日志和数据(避免容器删除后数据丢失),通过 -v 挂载本地目录到容器内对应路径。 执行以下命令(直接复制,路径可按需修改):
docker run -d --name onlyoffice -p : -e "DB_TYPE=sqlite" -v ~/onlyoffice/data:/var/www/onlyoffice/Data -v ~/onlyoffice/logs:/var/log/onlyoffice -v ~/onlyoffice/conf:/etc/onlyoffice onlyoffice/documentserver:latest
关键参数说明:
-p 8080:80 # 宿主机8080端口映射到容器80端口(避免80被占用)
-v ~/onlyoffice/data:/var/www/onlyoffice/Data # 数据存储
-v ~/onlyoffice/logs:/var/log/onlyoffice # 日志
-v ~/onlyoffice/conf:/etc/onlyoffice # 配置文件
验证是否启动成功,状态为 Up 表示运行中:
查看启动日志(关键,确认服务就绪):
docker logs -f onlyoffice
等待日志输出 Starting supervisord... 或 OnlyOffice Document Server is running,表示启动完成(首次启动可能需要 1-2 分钟)
3、访问 OnlyOffice
打开浏览器,访问:
http://localhost:8080
首次访问会显示 OnlyOffice 初始化页面(语言选择、许可协议等),说明部署成功。
需要自己封装yaml文件,vi onlyoffice-deploy.yaml
复制以下内容:
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000}
span.s1 {font-variant-ligatures: no-common-ligatures}
apiVersion: apps/v1
kind: Deployment
metadata:
name: onlyoffice
spec:
replicas: 1
selector:
matchLabels:
app: onlyoffice
template:
metadata:
labels:
app: onlyoffice
spec:
containers:
- name: onlyoffice
image: onlyoffice/documentserver:latest # 镜像名(需与本地拉取的一致)
imagePullPolicy: IfNotPresent # 优先使用节点本地镜像(避免重复拉取)
ports:
- containerPort: 80 # OnlyOffice 默认端口
resources:
requests:
cpu: "1" # 最低 CPU 要求(OnlyOffice 较耗资源)
memory: "2Gi" # 最低内存要求(避免 OOM 崩溃)
limits:
cpu: "2"
memory: "4Gi"
---
apiVersion: v1
kind: Service
metadata:
name: onlyoffice-service
spec:
selector:
app: onlyoffice
type: NodePort # 用 NodePort 暴露服务,方便 Minikube 访问
ports:
- port: 80 # Service 内部端口
targetPort: 80 # 容器端口(与 Deployment 中一致)
nodePort: 30080 # 固定 NodePort(范围 30000-32767,可选
粘贴完成后保存。
kubectlapply-fonlyoffice-deploy.yaml
查看部署状态:
# 查看 Pod 是否运行(可能需要 1-2 分钟初始化)
kubectl get pods -w
# 查看 Service 状态
kubectl get svc onlyoffice-service
注意:如果Pod 状态长时间卡在 Pending 或 ImagePullBackOff,用以下命令排查错误:
kubectl describe pod <pod-name> # 替换 <pod-name> 为实际 Pod 名称
Minikube 中通过 NodePort 访问服务,需通过 Minikube 的 IP + 映射的端口:
获取 Minikube 节点 IP:
minikubeip # 输出类似:192.168.49.2
访问地址:在浏览器中输入 http://<minikube-ip>:30080(例如 http://192.168.49.2:30080)。
首次访问会显示 OnlyOffice 初始化页面,说明部署成功。
1、Pod 启动后立即崩溃(OOM 或 CPU 不足): OnlyOffice 对资源要求较高,若提示 OutOfMemory 或 CPUThrottled,修改 YAML 中 resources.limits 提高内存(如 memory: "6Gi"),重新应用:
kubectlapply-fonlyoffice-deploy.yaml
2、访问服务超时:检查 Service 端口是否正确(30080),以及 Minikube 是否正常运行:
minikube status # 确保状态为 Running
3、pod运行正常,但通过上述地址就是无法访问
(1)检查 Service 与 Pod 关联是否正常:
kubectl describe svc onlyoffice-service | grep Endpoints
如果 ENDPOINTS 为空,说明 Service 没关联到 Pod,检查 Deployment 的selector和 Pod 的labels是否一致。
(2)确认 Pod 内服务是否真的启动:
# 进入Pod,检查80端口是否监听
kubectl exec -it <pod-name> -- netstat -tuln | grep
# 尝试在Pod内访问自身服务
kubectl exec -it <pod-name> -- curl -I localhost:
如果端口未监听或curl无响应,说明容器内服务没启动,看日志:
用Minikube自带命令暴露服务(避免IP/端口输错):
# 自动获取可访问的地址(会处理驱动层端口转发)
minikube service onlyoffice-service --url
直接用输出的 URL 访问(可能和你手动输的不同,因 Minikube 驱动而异)。通过这里输出的url,一般都可以直接访问。
页面效果如下:
至此,我们就完成了onlyoffice的pod部署。
其他可能的问题参考:例如docker镜像源设置,可修改为清华、中科大等国内的镜像源,相关文章较多,这里就不再赘述。如果有问题可以留言交流。
本篇介绍了minikube的快速安装,搭建一个本地可用的k8s集群,并介绍了onlyoffice在线文档编辑以及几种部署方式。下一篇将演示怎样实现文档编辑、存储及上传,以及onlyoffice的架构,敬请期待。