利用Docker Compose一键部署DzzOffice与OnlyOffice私有云办公平台
1. 为什么需要私有云办公平台?
最近几年远程办公的需求越来越旺盛,很多中小企业都在寻找性价比高的协同办公解决方案。市面上虽然有不少SaaS产品,但数据安全性和定制化程度往往难以兼顾。我自己在帮客户部署私有化办公系统时,发现用Docker Compose整合DzzOffice和OnlyOffice的方案特别实用。
DzzOffice是一个开源的在线办公套件,提供了文件管理、在线文档、团队协作等基础功能。而OnlyOffice则是目前最接近微软Office体验的开源办公套件,支持多人实时协作编辑文档。把它们打包部署在自有服务器上,既能保证数据安全,又能获得完整的办公体验。
传统部署方式需要分别安装配置MySQL、Web服务和文档服务,过程繁琐容易出错。而用Docker Compose编排后,所有服务都能通过一个配置文件一键启动,部署时间从半天缩短到10分钟。下面我就分享下具体实现方法。
2. 环境准备与Docker安装
2.1 服务器基础配置
建议使用4核8G以上的云服务器或物理机,系统推荐Ubuntu 20.04 LTS或Debian 10。我测试过在2G内存的机器上也能运行,但打开大型文档时会出现卡顿。存储空间建议预留50GB以上,因为文档和历史版本会占用不少空间。
首先更新系统软件包:
sudo apt update && sudo apt upgrade -y安装必要的工具:
sudo apt install -y curl vim net-tools2.2 Docker引擎安装
Docker是整套方案的基础,安装最新稳定版:
# 卸载旧版本 sudo apt remove docker docker-engine docker.io containerd runc # 安装依赖 sudo apt install -y apt-transport-https ca-certificates gnupg-agent software-properties-common # 添加官方GPG密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # 添加仓库 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" # 安装Docker sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io验证安装:
sudo docker run hello-world2.3 Docker Compose安装
推荐安装v2版本,兼容性更好:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose验证版本:
docker-compose --version3. 编写docker-compose.yml文件
3.1 基础结构设计
在/home目录下创建项目文件夹:
mkdir -p ~/dzzoffice && cd ~/dzzoffice新建docker-compose.yml文件,整体结构包含三个服务:
version: '3.8' services: mysql: # MySQL数据库配置 dzzoffice: # 办公套件配置 depends_on: - mysql onlyoffice: # 文档服务配置 volumes: mysql_data: dzzoffice_data:3.2 MySQL服务配置
使用5.7版本保证兼容性,配置数据卷持久化:
mysql: image: mysql:5.7.37 container_name: mysql environment: MYSQL_ROOT_PASSWORD: "StrongPassword@123" MYSQL_DATABASE: dzzoffice MYSQL_USER: dzzuser MYSQL_PASSWORD: "UserPassword@456" volumes: - mysql_data:/var/lib/mysql ports: - "3306:3306" restart: unless-stopped这里有几个注意事项:
- 密码不要使用简单组合,建议包含大小写字母、数字和特殊字符
- 映射3306端口到宿主机方便调试
- 使用restart策略保证服务异常退出后自动重启
3.3 DzzOffice服务配置
使用社区维护的镜像,配置PHP上传限制:
dzzoffice: image: imdevops/dzzoffice:latest container_name: dzzoffice depends_on: - mysql environment: - TZ=Asia/Shanghai - PHP_UPLOAD_MAX_FILESIZE=128M - PHP_POST_MAX_SIZE=128M volumes: - dzzoffice_data:/var/www/html/data ports: - "8080:80" restart: unless-stopped重要参数说明:
- PHP_UPLOAD_MAX_FILESIZE:控制文件上传大小限制
- TZ设置时区避免时间显示问题
- 8080端口避免与常见服务冲突
3.4 OnlyOffice服务配置
官方镜像已经包含所有依赖:
onlyoffice: image: onlyoffice/documentserver container_name: onlyoffice environment: - JWT_ENABLED=false - TZ=Asia/Shanghai ports: - "9000:80" restart: unless-stoppedJWT_ENABLED=false关闭密钥验证简化配置,生产环境建议开启并设置复杂密钥。
4. 启动与初始化配置
4.1 一键启动服务
在docker-compose.yml所在目录执行:
docker-compose up -d查看服务状态:
docker-compose ps正常情况应该看到三个容器都是Up状态。
4.2 DzzOffice初始化
浏览器访问http://服务器IP:8080/install/index.php,按照向导完成安装:
- 数据库配置环节,主机填写mysql(容器名),端口3306,数据库名dzzoffice,用户名密码与compose文件一致
- 管理员账号设置环节,建议使用复杂密码并妥善保管
- 安装完成后删除install目录增强安全性:
docker exec dzzoffice rm -rf /var/www/html/install4.3 OnlyOffice集成配置
登录DzzOffice后台:
- 进入"应用市场",安装"OnlyOffice集成"插件
- 在插件设置中填写OnlyOffice地址:http://服务器IP:9000
- 测试连接确保显示"连接成功"
常见问题排查:
- 如果显示连接失败,检查onlyoffice容器日志:
docker logs onlyoffice- 确保防火墙放行了9000端口
5. 高级配置与优化
5.1 数据备份策略
配置定期备份MySQL和用户文件:
# 创建备份目录 mkdir -p ~/backups/dzzoffice # MySQL备份脚本 docker exec mysql sh -c 'exec mysqldump -uroot -p"$MYSQL_ROOT_PASSWORD" dzzoffice' > ~/backups/dzzoffice/db-$(date +%F).sql # 文件备份 docker cp dzzoffice:/var/www/html/data ~/backups/dzzoffice/data-$(date +%F)建议添加到crontab每天自动执行:
0 2 * * * /home/user/dzzoffice/backup.sh5.2 性能调优
修改docker-compose.yml添加资源限制:
onlyoffice: deploy: resources: limits: cpus: '2' memory: 4G reservations: memory: 2GNginx优化配置:
docker exec dzzoffice sed -i 's/worker_connections 768;/worker_connections 4096;/g' /etc/nginx/nginx.conf docker-compose restart dzzoffice5.3 HTTPS安全配置
使用Let's Encrypt证书:
dzzoffice: ports: - "443:443" volumes: - ./ssl:/etc/ssl/certs申请证书后,修改DzzOffice配置启用HTTPS。
6. 日常维护技巧
6.1 版本升级方法
先停止服务并备份数据:
docker-compose down修改docker-compose.yml中的镜像版本号后:
docker-compose pull docker-compose up -d6.2 日志查看方法
查看实时日志:
docker-compose logs -f按服务筛选日志:
docker logs dzzoffice --tail 100 -f6.3 常见问题解决
文件上传失败:
- 检查data目录权限:
docker exec dzzoffice chown -R www-data:www-data /var/www/html/data- 确认PHP配置生效:
docker exec dzzoffice php -i | grep upload_max_filesize文档打开缓慢:
- 检查服务器带宽
- 优化OnlyOffice配置:
onlyoffice: environment: - WORKER_PROCESSES=4