一、安装 Docker Compose
# 下载 Docker Compose 二进制文件(根据系统架构选择)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker-compose --version
二、创建 OnlyOffice 项目目录并配置
1. 创建项目目录
mkdir -p onlyoffice/data/{certs,logs,data,lib,db,fonts,config}
cd onlyoffice
2. 编写 docker-compose.yml 文件
networks:
1panel-network:
external: true
services:
onlyoffice:
container_name: ${CONTAINER_NAME:-onlyoffice}
environment:
- JWT_ENABLED=true
- JWT_SECRET=${JWT_SECRET:-your_secure_jwt_secret}
- WOPI_ENABLED=true
- DOCUMENT_SERVER_PORT_HTTP=${PANEL_APP_PORT_HTTP:-40156}
- FORCE_SSL=true
- SERVER_URL=https://your-domain.com # 替换为你的域名
image: onlyoffice/documentserver:latest
networks:
- 1panel-network
ports:
- "${PANEL_APP_PORT_HTTP:-40156}:80"
restart: always
volumes:
- ./data/certs:/var/www/onlyoffice/Data/certs
- ./data/logs:/var/log/onlyoffice
- ./data/data:/var/www/onlyoffice/Data
- ./data/lib:/var/lib/onlyoffice
- ./data/db:/var/lib/postgresql
- ./data/fonts:/var/www/onlyoffice/documentserver/core-fonts
- ./data/config:/etc/onlyoffice/documentserver # 关键:挂载配置目录
env_file:
- .env
3. 创建环境变量文件 .env
echo "CONTAINER_NAME=onlyoffice
JWT_SECRET=your_secure_jwt_secret # 建议使用强密码
PANEL_APP_PORT_HTTP=40156
CPUS=1.0
MEMORY_LIMIT=2g" > .env
三、启动容器并生成默认配置
1. 启动 OnlyOffice 容器
docker-compose up -d
# 等待约30秒让容器初始化
2. 确认容器运行状态
docker ps | grep onlyoffice
# 应显示容器状态为 "Up"
3. 进入容器查看默认配置文件
docker exec -it onlyoffice bash
ls /etc/onlyoffice/documentserver
# 应显示 main.json、document-server.json 等文件
exit
4. 复制容器内配置到宿主机(实现持久化)
docker cp onlyoffice:/etc/onlyoffice/documentserver/. ./data/config/
5. 检查宿主机配置目录
ls ./data/config
# 应显示 main.json、document-server.json 等文件
四、按需求修改配置
五、重启容器使配置生效
docker-compose down
docker-compose up -d
# 查看日志确认配置加载
docker logs -f onlyoffice
# 应看到 "Generating WOPI private key...Done" 等启动日志,无 JSON 错误
六、验证配置持久化与功能
1. 验证宿主机修改同步到容器
# 在宿主机修改配置文件
echo "test-persist" > ./data/config/test.txt
# 查看容器内是否同步
docker exec -it onlyoffice cat /etc/onlyoffice/documentserver/test.txt
# 应显示 "test-persist"
七、常见问题解决方案
- JSON 解析错误(json: error: undefined):
- 检查
main.json
格式,确保无多余逗号、引号闭合正确
- 使用
jsonlint
工具校验
- 配置文件未同步:
- 确认
docker-compose.yml
中挂载路径正确:- ./data/config:/etc/onlyoffice/documentserver
- 确保容器启动时先生成默认配置,再复制到宿主机
- 权限问题:
- 赋予宿主机目录全权限:
chmod -R 777 ./data
- 若使用 SELinux,添加挂载标记:
- ./data/config:/etc/onlyoffice/documentserver:z
- 容器启动失败:
- 检查端口是否被占用:
lsof -i :40156
- 移除旧容器:
docker rm -f onlyoffice
后重新启动