使用Docker Compose一键部署OnlyOffice的完整指南与配置解析

 更新时间:2026年01月09日 08:27:16   作者:东方佑  
OnlyOffice作为一款强大的开源办公套件,不仅提供与Microsoft Office高度兼容的在线编辑体验,还支持实时协作编辑,成为许多企业和团队的首选解决方案,下面就将详细介绍如何使用Docker Compose快速部署功能完整的OnlyOffice服务栈

在现代办公环境中,高效的文档协作工具已成为团队生产力的核心。OnlyOffice作为一款强大的开源办公套件,不仅提供与Microsoft Office高度兼容的在线编辑体验,还支持实时协作编辑,成为许多企业和团队的首选解决方案。本文将详细介绍如何使用Docker Compose快速部署功能完整的OnlyOffice服务栈。

为什么选择Docker部署OnlyOffice

传统软件安装方式往往需要复杂的依赖配置和环境调整,而Docker容器化部署则具有显著优势:环境一致性确保在不同系统中运行效果相同;快速部署大幅缩短安装时间;资源隔离避免服务间相互干扰;易于维护简化升级和备份流程。

特别是使用Docker Compose,可以通过简单的YAML文件定义多服务应用栈,实现一键启动所有相关服务,极大简化了部署流程。

Docker Compose配置文件全面解析

下面我们深入分析一个生产环境级别的OnlyOffice部署配置:

1. 网络与存储规划

配置文件中首先定义了一个独立的Docker网络,这对于多容器应用至关重要:

networks:
  onlyoffice-network:
    driver: bridge
    ipam:
      config:
        - subnet: 172.20.0.0/16

使用独立网络确保容器间通信安全高效,同时避免端口冲突。所有服务都连接到同一网络,形成封闭的内部通信环境。

数据持久化是通过卷映射实现的,关键数据目录如MySQL数据、Redis缓存和OnlyOffice文档数据都映射到宿主机相应目录,防止容器重建时数据丢失。

2. 数据库服务配置

MySQL服务作为Community Server的主数据库:

onlyoffice-mysql:
  image: mysql:8.0
  environment:
    MYSQL_ROOT_PASSWORD: onlyoffice
    MYSQL_DATABASE: onlyoffice
  volumes:
    - ./data/mysql:/var/lib/mysql
  healthcheck:
    test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]

同时配置了PostgreSQL作为Document Server的专用数据库。双数据库设计符合OnlyOffice的架构要求,确保各组件性能最优。

3. 核心服务组件

部署包含三个核心服务:

  • Redis缓存服务:提升系统响应速度,减少数据库压力
  • Document Server:文档处理核心,提供文档编辑和转换功能
  • Community Server:社区功能核心,提供用户管理和协作界面

每个服务都配置了健康检查机制,确保容器启动顺序正确,避免依赖问题。

关键配置参数详解

安全设置

JWT(JSON Web Token)认证是保障OnlyOffice安全的关键:

environment:
  - JWT_ENABLED=true
  - JWT_SECRET=your-secret-key-here-change-me

务必修改默认JWT密钥,并使用强密码策略,这是防止未授权访问的第一道防线。

性能优化建议

根据实际使用场景,可调整以下参数优化性能:

  • 资源限制:对于内存有限的NAS环境,可添加内存限制(如–memory=“2g”)
  • 端口配置:生产环境建议使用非标准端口(如8080)增强安全性
  • 日志管理:定期清理日志文件,防止磁盘空间耗尽

部署与运维指南

启动服务

在包含docker-compose.yml的目录中执行:

docker-compose up -d

此命令将后台启动所有服务。首次运行会下载镜像,可能需要较长时间。

服务验证

启动后,通过以下方式验证服务状态:

  • 检查容器运行状态:docker ps应显示所有服务均为"Up"状态
  • 访问Community Server:http://服务器IP:8080
  • 访问Document Server:http://服务器IP:80/welcome/

常见问题排查

  • 端口冲突:如果80或8080端口被占用,修改ports映射为"新端口:容器端口"
  • 字体显示问题:中文文档可能出现乱码,需添加中文字体支持
  • 权限错误:确保宿主机映射目录有适当写权限
  • 私有IP限制:在内网环境中,可能需要修改allowPrivateIPAddress为true

备份与升级策略

数据备份

定期备份以下目录:

  • ./data/mysql:MySQL数据库文件
  • ./data/redis:Redis持久化数据
  • ./data/ds./data/cs:OnlyOffice文档数据

服务升级

  • 停止现有服务:docker-compose down
  • 备份数据目录
  • 拉取最新镜像:docker-compose pull
  • 重新启动服务:docker-compose up -d

注意:升级前务必测试新版本兼容性,特别是大版本更新时。

完整代码

version: '3.8'

services:
  # MySQL 数据库服务(独立容器,提高稳定性)
  onlyoffice-mysql:
    image: mysql:8.0
    pull_policy: missing
    container_name: onlyoffice-mysql
    restart: unless-stopped
    command: 
      - --default-authentication-plugin=mysql_native_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
      - --innodb_force_recovery=0
    environment:
      MYSQL_ROOT_PASSWORD: onlyoffice
      MYSQL_DATABASE: onlyoffice
      MYSQL_USER: onlyoffice
      MYSQL_PASSWORD: onlyoffice
      TZ: Asia/Shanghai
    volumes:
      - ./data/mysql:/var/lib/mysql
      - ./config/mysql:/etc/mysql/conf.d
    ports:
      - "3306:3306"
    networks:
      - onlyoffice-network
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-ponlyoffice"]
      timeout: 20s
      retries: 10

  # Redis 缓存服务
  onlyoffice-redis:
    image: redis:7.2-alpine
    pull_policy: missing
    container_name: onlyoffice-redis
    restart: unless-stopped
    command: redis-server --appendonly yes --requirepass onlyoffice
    volumes:
      - ./data/redis:/data
    ports:
      - "6379:6379"
    networks:
      - onlyoffice-network
    healthcheck:
      test: ["CMD", "redis-cli", "--raw", "incr", "ping"]
      timeout: 10s
      retries: 5

  # OnlyOffice Document Server
  onlyoffice-document-server:
    image: onlyoffice/documentserver:7.4
    container_name: onlyoffice-document-server
    restart: unless-stopped
    environment:
      - JWT_ENABLED=true
      - JWT_SECRET=your-secret-key-here-change-me
      - DB_TYPE=postgres
      - DB_HOST=onlyoffice-document-db
      - DB_NAME=onlyoffice
      - DB_USER=onlyoffice
      - DB_PASS=onlyoffice
      - TZ=Asia/Shanghai
    volumes:
      - ./data/ds:/var/www/onlyoffice/Data
      - ./data/ds/logs:/var/log/onlyoffice
      - ./data/ds/lib:/var/lib/onlyoffice
      - ./data/ds/db:/var/lib/postgresql
      - ./data/ds/certs:/var/www/onlyoffice/Data/certs
    ports:
      - "80:80"
      - "443:443"
    depends_on:
      onlyoffice-document-db:
        condition: service_healthy
    networks:
      - onlyoffice-network
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost/healthcheck"]
      interval: 30s
      timeout: 10s
      retries: 10

  # Document Server 数据库
  onlyoffice-document-db:
    image: postgres:13
    pull_policy: missing
    container_name: onlyoffice-document-db
    restart: unless-stopped
    environment:
      POSTGRES_DB: onlyoffice
      POSTGRES_USER: onlyoffice
      POSTGRES_PASSWORD: onlyoffice
      POSTGRES_HOST_AUTH_METHOD: md5
    volumes:
      - ./data/ds-db:/var/lib/postgresql/data
    networks:
      - onlyoffice-network
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U onlyoffice -d onlyoffice"]
      interval: 30s
      timeout: 10s
      retries: 5

  # OnlyOffice Community Server(主要服务)
  onlyoffice-community-server:
    image: onlyoffice/communityserver:latest
    container_name: onlyoffice-community-server
    restart: unless-stopped
    environment:
      # MySQL 配置
      MYSQL_SERVER_HOST: onlyoffice-mysql
      MYSQL_SERVER_PORT: 3306
      MYSQL_SERVER_DB_NAME: onlyoffice
      MYSQL_ROOT_USER: root
      MYSQL_ROOT_PASSWORD: onlyoffice
      MYSQL_SERVER_USER: onlyoffice
      MYSQL_SERVER_PASS: onlyoffice
      
      # Redis 配置
      REDIS_SERVER_HOST: onlyoffice-redis
      REDIS_SERVER_PORT: 6379
      REDIS_SERVER_PASSWORD: onlyoffice
      
      # Document Server 配置
      DOCUMENT_SERVER_ENABLED: "true"
      DOCUMENT_SERVER_URL: "http://onlyoffice-document-server/"
      DOCUMENT_SERVER_JWT_ENABLED: "true"
      DOCUMENT_SERVER_JWT_SECRET: "your-secret-key-here-change-me"
      DOCUMENT_SERVER_JWT_HEADER: "Authorization"
      
      # 基础配置
      SERVER_HOST: localhost
      CONTROL_PANEL_ENABLED: "true"
      CORE_BASE_DOMAIN: localhost
      
      # 安全配置
      MYSQL_USER: mysql
      MYSQL_GROUP: mysql
      USER: "999:999"
      
      # 时区
      TZ: Asia/Shanghai
      
    volumes:
      - ./data/cs:/var/www/onlyoffice/Data
      - ./data/cs/logs:/var/log/onlyoffice
      - ./data/cs/fonts:/usr/share/fonts/truetype/custom
      - ./data/cs/letsencrypt:/etc/letsencrypt
      - ./config/cs:/etc/onlyoffice/communityserver
    ports:
      - "8080:80"
      - "8443:443"
      - "5222:5222"  # XMPP
      - "9866:9866"  # 服务端口
    depends_on:
      onlyoffice-mysql:
        condition: service_healthy
      onlyoffice-redis:
        condition: service_healthy
      onlyoffice-document-server:
        condition: service_healthy
    networks:
      - onlyoffice-network
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9866/healthcheck"]
      interval: 30s
      timeout: 10s
      retries: 5

networks:
  onlyoffice-network:
    driver: bridge
    ipam:
      config:
        - subnet: 172.20.0.0/16

总结

通过本文介绍的Docker Compose配置,您可以快速部署一个功能完整、安全可靠的OnlyOffice协作平台。这种容器化部署方案不仅简化了安装流程,还为企业提供了易于维护和扩展的文档协作解决方案。

无论是小型团队还是大型企业,OnlyOffice都能满足日常办公需求,而Docker化部署则确保了服务的稳定性和可维护性。现在就开始使用这个配置,构建您团队的专属协作平台吧!

提示:本文配置适用于测试和生产环境,实际部署时请根据硬件资源调整参数,并加强安全设置。

到此这篇关于使用Docker Compose一键部署OnlyOffice的完整指南与配置解析的文章就介绍到这了,更多相关Docker部署OnlyOffice内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker进阶之构建自定义镜像实战指南

    Docker进阶之构建自定义镜像实战指南

    从docker镜像仓库中下载的镜像不能满足我们的需求时,可以对镜像进行更改,下面这篇文章主要给大家介绍了关于Docker进阶之构建自定义镜像实战的相关资料,需要的朋友可以参考下
    2022-07-07
  • Docker利用DockerFile创建部署NVIDIA+PyTorch容器的详细过程

    Docker利用DockerFile创建部署NVIDIA+PyTorch容器的详细过程

    这篇文章主要介绍了Docker利用DockerFile创建部署NVIDIA+PyTorch容器的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • Docker Desktop 安装使用教程(图文步骤)

    Docker Desktop 安装使用教程(图文步骤)

    Docker是一种打包和运行应用程序的新方式. Docker Desktop是 Docker的Windows桌面版本,本文主要介绍了Docker Desktop安装使用教程,感兴趣的可以了解一下
    2024-02-02
  • docker安装nginx并配置ssl证书的方法步骤

    docker安装nginx并配置ssl证书的方法步骤

    本文主要介绍了docker安装nginx并配置ssl证书的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 完美卸载Docker的详细步骤

    完美卸载Docker的详细步骤

    Docker是一种流行的容器化平台,但是有时候我们可能需要卸载Docker,无论是因为需要重新安装版本,还是因为不再需要使用Docker,无论何种原因,正确地卸载Docker是很重要的,以确保系统的干净和稳定,下面跟大家详细介绍如何彻底卸载Docker的方法,让你能够轻松地清理干净
    2023-11-11
  • docker run启动的容器挂掉了数据怎么办

    docker run启动的容器挂掉了数据怎么办

    这篇文章主要介绍了docker run启动的容器挂掉了,数据怎么办,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • 解决Docker容器时区及时间不同步问题的方法

    解决Docker容器时区及时间不同步问题的方法

    这篇文章主要介绍了解决Docker容器时区及时间不同步问题的方法,有效的解决了Docker容器时间同步问题,有兴趣的可以了解一下。
    2016-12-12
  • Docker远程连接设置的实现示例

    Docker远程连接设置的实现示例

    本文主要介绍了Docker远程连接设置的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 在CentOS 7上安装和使用Docker的方法步骤

    在CentOS 7上安装和使用Docker的方法步骤

    Docker 是一个应用程序,它简化了在容器中运行应用程序进程的过程,这些容器类似于虚拟机,但更加便携、资源友好,并且更依赖于主机操作系统,在本教程中,你将学习如何在现有的 CentOS 7 安装上安装并使用 Docker,需要的朋友可以参考下
    2024-07-07
  • Docker服务迁移的实现

    Docker服务迁移的实现

    本文详细介绍了如何备份和迁移Docker服务数据,包括停止Docker服务、备份Docker数据和DockerCompose文件,使用SCP或Rsync传输备份文件,以及在新服务器上恢复Docker数据和设置权限,文中提供了详细的命令和步骤,确保数据迁移过程顺利进行
    2024-10-10

最新评论