别再手动折腾了!用Docker Compose一键部署DzzOffice+OnlyOffice协同办公平台(附完整配置文件)
基于Docker Compose的DzzOffice+OnlyOffice协同办公平台全自动部署指南
在当今快节奏的数字化工作环境中,企业团队对高效协同办公工具的需求日益增长。传统的手动部署方式不仅耗时耗力,还容易因配置差异导致环境不一致问题。本文将介绍如何利用Docker Compose技术,实现DzzOffice与OnlyOffice文档服务的一键式标准化部署,彻底告别繁琐的手动配置过程。
1. 环境准备与架构设计
1.1 系统需求分析
部署前需确保宿主机满足以下基本要求:
- 操作系统:推荐使用Ubuntu 20.04 LTS或CentOS 8+
- Docker版本:19.03.0及以上
- Docker Compose版本:1.25.0及以上
- 硬件配置:
- CPU:至少4核
- 内存:建议8GB以上
- 存储:50GB可用空间
提示:可通过
docker --version和docker-compose --version命令验证当前环境版本
1.2 服务架构解析
本方案采用三组件协同工作模式:
- MySQL 5.7.27:作为DzzOffice的后端数据库
- DzzOffice:提供协同办公平台核心功能
- OnlyOffice Document Server:实现文档在线编辑能力
# 检查系统资源使用情况 free -h df -h2. Docker Compose配置文件详解
2.1 完整配置方案
创建docker-compose.yml文件,内容如下:
version: '3.8' services: mysql: image: mysql:5.7.27 container_name: dzz-mysql environment: MYSQL_ROOT_PASSWORD: your_secure_password MYSQL_DATABASE: dzzoffice volumes: - mysql_data:/var/lib/mysql networks: - dzz-network restart: unless-stopped dzzoffice: image: imdevops/dzzoffice:latest container_name: dzz-office depends_on: - mysql environment: - DB_HOST=mysql - DB_NAME=dzzoffice - DB_USER=root - DB_PASSWORD=your_secure_password volumes: - dzz_data:/var/www/html/data networks: - dzz-network ports: - "9090:80" restart: unless-stopped onlyoffice: image: onlyoffice/documentserver container_name: dzz-onlyoffice networks: - dzz-network ports: - "9000:80" restart: unless-stopped volumes: mysql_data: dzz_data: networks: dzz-network: driver: bridge2.2 关键配置说明
- 网络配置:创建专用网络
dzz-network确保服务间安全通信 - 数据持久化:
- MySQL数据存储在
mysql_data卷 - DzzOffice应用数据存储在
dzz_data卷
- MySQL数据存储在
- 环境变量:
- 必须修改
your_secure_password为强密码 - 数据库连接参数通过环境变量注入
- 必须修改
注意:生产环境务必使用复杂密码替代示例中的
your_secure_password
3. 部署与初始化流程
3.1 一键启动服务
执行以下命令启动所有服务:
docker-compose up -d系统将自动完成:
- 拉取所需镜像(首次运行)
- 创建持久化卷
- 建立专用网络
- 按依赖顺序启动容器
3.2 服务健康检查
验证各容器运行状态:
docker-compose ps预期输出应显示三个服务的状态均为running:
| Name | Command | State | Ports |
|---|---|---|---|
| dzz-mysql | docker-entrypoint.sh | Up | 3306/tcp |
| dzz-office | apache2-foreground | Up | 0.0.0.0:9090->80/tcp |
| dzz-onlyoffice | /bin/sh -c /app/ds/run | Up | 0.0.0.0:9000->80/tcp |
3.3 DzzOffice初始化配置
- 访问
http://服务器IP:9090/install/index.php - 按向导完成安装:
- 数据库配置:
- 主机地址填写
mysql(使用Docker服务名) - 密码为
your_secure_password
- 主机地址填写
- 管理员账户设置
- 数据库配置:
- 安装完成后进入应用市场,启用OnlyOffice插件
4. 高级配置与优化
4.1 性能调优建议
修改docker-compose.yml添加资源限制:
services: onlyoffice: deploy: resources: limits: cpus: '2' memory: 4G reservations: memory: 2G4.2 安全加固措施
- 修改默认端口:
ports: - "192.168.1.100:18080:80" # 限制只监听内网IP - 启用HTTPS:
- 为OnlyOffice配置SSL证书
- 使用Nginx反向代理实现全站HTTPS
4.3 备份与恢复方案
创建备份脚本backup.sh:
#!/bin/bash BACKUP_DIR=/opt/dzz_backup/$(date +%Y%m%d) mkdir -p $BACKUP_DIR # 备份MySQL数据 docker exec dzz-mysql mysqldump -uroot -p"your_secure_password" dzzoffice > $BACKUP_DIR/dzzoffice.sql # 备份应用数据 docker run --rm --volumes-from dzz-office -v $BACKUP_DIR:/backup alpine \ tar cvf /backup/dzz_data.tar /var/www/html/data5. 常见问题排查
5.1 服务启动失败排查
检查容器日志定位问题:
docker-compose logs mysql # 查看MySQL日志 docker-compose logs dzzoffice # 查看DzzOffice日志5.2 OnlyOffice集成问题
确保DzzOffice中配置的API地址为:
http://服务器IP:90005.3 文件权限问题处理
若出现文件上传失败,执行:
docker exec dzz-office chown -R www-data:www-data /var/www/html/data6. 生产环境部署建议
对于企业级部署,建议考虑以下增强方案:
- 高可用架构:
- MySQL主从复制
- OnlyOffice多实例负载均衡
- 监控方案:
- 使用Prometheus+Grafana监控容器资源使用
- 设置异常告警机制
- 自动化维护:
- 通过CI/CD管道实现配置版本控制
- 定期自动备份验证
实际部署中发现,为OnlyOffice分配充足内存(≥4GB)能显著提升文档渲染性能。网络带宽方面,建议保证至少100Mbps的可用带宽以获得流畅的协同编辑体验。
