文章目录
- 前言
- 一、升级过程
-
- [1. 升级容器](#1. 升级容器)
- [2. 修改配置](#2. 修改配置)
- 二、踩坑
-
- [1. 令牌无效](#1. 令牌无效)
- [2. 如何查看已有容器onlyoffice版本](#2. 如何查看已有容器onlyoffice版本)
- [3. 打开文件时,一直转圈圈,后显示下载失败](#3. 打开文件时,一直转圈圈,后显示下载失败)
- [4. 拉取镜像 (2024年12月10日有效)](#4. 拉取镜像 (2024年12月10日有效))
前言
项目使用的onlyoffice版本太老,需要进行升级。
旧版本:6.4.2-6
新版本:8.2.2-22 (2024年12月10日)
一、升级过程
1. 升级容器
bash
# 拉取镜像
docker pull onlyoffice/documentserver
# 打上tag,防止都是latest标签;移除旧标签(请仔细检查,防止误删镜像)
docker tag aae28af46240 onlyoffice/documentserver:8.2.2-22
docker rmi onlyoffice/documentserver:latest
# 停止旧服务,
docker ps -a | grep onlyoffice
docker stop 943f3ec887b6
# 更新,起一个新的服务onlyoffice2024
docker run --name onlyoffice2024 -e JWT_ENABLED=false -i -t -d -p 9655:80 onlyoffice/documentserver:8.2.2-22
2. 修改配置
bash
# 拷贝default.json配置文件至本地
docker cp onlyoffice2024:/etc/onlyoffice/documentserver/default.json ./default.json
# 修改本地default.json以下几行,从false改为true
"request-filtering-agent" : {
"allowPrivateIPAddress": true,
"allowMetaIPAddress": true
}
# 将修改后的文件拷贝到容器中覆盖
docker cp default.json onlyoffice2024:/etc/onlyoffice/documentserver/default.json
# 重启容器onlyoffice2024
docker restart
此时就升级完成了,可以正常使用
二、踩坑
1. 令牌无效
原因:onlyoffice从7.2版本开始,默认开启jwt;
规避方法:在创建容器时,注入环境变量-e JWT_ENABLED=false
关闭
2. 如何查看已有容器onlyoffice版本
进入容器,执行以下命令即可:
bash
dpkg -l| grep onlyoffice
3. 打开文件时,一直转圈圈,后显示下载失败
先进入容器检查日志文件/var/log/onlyoffice/documentserver/converter/out.log
,为It is private IP address.
报错
[2024-12-09T09:18:20.188] [ERROR] [localhost] [192.168.117.202new.docx1733735897240] [uid-1] nodeJS - error downloadFile:url=http://10.35.56.90:9655/example/download?fileName=new.docx&useraddress=192.168.117.202;attempt=3;code:null;connect:null Error: DNS lookup 10.35.56.90(family:undefined, host:undefined) is not allowed. Because, It is private IP address.
at validateIPAddress (/snapshot/server/Common/node_modules/request-filtering-agent/lib/request-filtering-agent.js:71:20)
at Socket.<anonymous> (/snapshot/server/Common/node_modules/request-filtering-agent/lib/request-filtering-agent.js:125:29)
at Object.onceWrapper (node:events:641:28)
at Socket.emit (node:events:539:35)
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1173:10)
解决办法:
bash
# 拷贝default.json配置文件至本地
docker cp onlyoffice2024:/etc/onlyoffice/documentserver/default.json ./default.json
# 修改本地default.json以下几行,从false改为true
"request-filtering-agent" : {
"allowPrivateIPAddress": true,
"allowMetaIPAddress": true
}
# 将修改后的文件拷贝到容器中覆盖
docker cp default.json onlyoffice2024:/etc/onlyoffice/documentserver/default.json
# 重启容器onlyoffice2024
docker restart
4. 拉取镜像 (2024年12月10日有效)
在/etc/docker/daemon.json
文件中增加如下内容,如没有该文件,使用root
用户创建。
json
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn"
]
}
重新加载配置,并重启容器可解决
bash
systemctl daemon-reload
systemctl restart docker
注意:貌似docker search
还是没有用的,还是报错Error response from daemon: Get "https://index.docker.io/v1/search?q=mysql&n=25": dial tcp 108.160.172.232:443: i/o timeout
;
但可以使用docker pull