
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 [archamd64] 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: StrongPassword123 MYSQL_DATABASE: dzzoffice MYSQL_USER: dzzuser MYSQL_PASSWORD: UserPassword456 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: - TZAsia/Shanghai - PHP_UPLOAD_MAX_FILESIZE128M - PHP_POST_MAX_SIZE128M 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_ENABLEDfalse - TZAsia/Shanghai ports: - 9000:80 restart: unless-stoppedJWT_ENABLEDfalse关闭密钥验证简化配置生产环境建议开启并设置复杂密钥。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安全配置使用Lets 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_PROCESSES4