docker中onlyoffice升级指导


前言

项目使用的onlyoffice版本太老,需要进行升级。
旧版本:6.4.2-6
新版本:8.2.2-22 (2024年12月10日)


一、升级过程

1. 升级容器

# 拉取镜像
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. 修改配置

# 拷贝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版本

进入容器,执行以下命令即可:

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)

解决办法:

# 拷贝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用户创建。

{
    "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn"
    ]
}

重新加载配置,并重启容器可解决

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
在这里插入图片描述

<think>好的,我现在需要帮助用户解析ORB-SLAM3源码中src目录下各个文件的功能。用户已经提供了一些引用内容,我需要结合这些引用信息,并按照系统级指令来组织回答。 首先,我要回忆一下ORB-SLAM3的结构。根据引用[2],src目录包含系统的各个模块的实现。所以src下的文件应该对应不同的模块,比如跟踪、局部建图、闭环检测等。 接下来,我需要确定src目录下有哪些主要文件或子目录。通常,像ORB-SLAM这样的项目可能会有System.cc、Tracking.cc、LocalMapping.cc、LoopClosing.cc、MapPoint.cc、KeyFrame.cc等文件,每个对应一个类或模块。 然后,根据用户提供的引用,引用[2]提到include文件夹定义了所有类、结构体和函数原型,而src是实现这些的地方。引用[3]提到了YAML文件、源代码文件(.cc)和时间戳文件,但用户现在关心的是src下的源代码文件功能。 我需要确保每个文件的功能描述准确。例如,System.cc可能是整个系统的入口,处理初始化和数据流;Tracking.cc负责跟踪相机位姿;LocalMapping.cc处理局部地图的构建和优化等。 另外,引用[4]提到CMakeLists.txt的配置,这可能涉及到如何编译src目录中的文件,但用户的问题是关于src目录下的文件功能,所以这部分可能不需要深入,除非有直接关联。 需要注意用户要求使用中文回答,结构清晰,分点说明,并且每个引用的末尾添加引用标识。例如,在提到各个模块时,引用[2]和[3]的相关部分需要标注。 还有,用户希望生成相关问题,我需要根据解析的内容提出几个相关的问题,比如如何修改某个模块,或者某个模块与其他模块的交互等。 最后,检查是否符合系统级指令:行内数学公式用$...$,独立公式用$$...$$,但在这个问题中可能用不上数学公式,所以可能不需要。确保LaTeX语法正确,但同样可能不涉及。使用中文,生成的问题相关且有意义。 现在,我需要将这些思考整理成一个结构化的回答,分点说明src目录下各个文件的功能,并附上相关问题。</think>### ORB-SLAM3源码中`src`目录文件功能解析 ORB-SLAM3的`src`目录包含系统核心模块的实现代码,以下是主要文件及其功能的解析: --- #### 1. **核心系统管理类** - **`System.cc`** 系统入口,负责初始化相机模型、传感器类型(单目/双目/RGB-D)、线程管理(跟踪、建图、闭环检测),以及多地图融合功能[^2]。 - 示例代码片段: ```cpp System::System(const string &strSettingsFile, const eSensor sensor, ...) { // 初始化传感器类型、加载配置参数、启动线程 } ``` --- #### 2. **跟踪模块** - **`Tracking.cc`** 实时跟踪相机位姿,提取ORB特征点,通过**运动模型**或**参考关键帧**估计初始位姿,并联合局部地图优化位姿[^2][^3]。 - 关键函数:`TrackWithMotionModel()`, `TrackReferenceKeyFrame()` --- #### 3. **局部建图模块** - **`LocalMapping.cc`** 管理局部地图的构建,包括新关键帧插入、地图点筛选(剔除冗余点)、局部Bundle Adjustment优化,以及与IMU数据的紧耦合(若启用)。 - 依赖文件:`KeyFrame.cc`, `MapPoint.cc` --- #### 4. **闭环检测与地图融合** - **`LoopClosing.cc`** 检测闭环候选帧,通过相似变换(Sim3)计算位姿一致性,执行闭环校正和全局Bundle Adjustment优化。支持多地图间的融合。 - 关键算法:词袋模型(DBoW2)匹配、Sim3优化 --- #### 5. **关键数据类** - **`KeyFrame.cc`** 定义关键帧数据结构,存储ORB特征点、位姿、共视图(Covisibility Graph)、本质图(Essential Graph)等关联信息。 - **`MapPoint.cc`** 表示三维地图点,记录其观测关键帧、描述子、深度估计及几何校验状态。 --- #### 6. **传感器与优化** - **`ImuTypes.h`/`ImuPreintegration.cc`** IMU数据处理,预积分计算位姿变化,实现视觉-惯性紧耦合[^3]。 - **`Optimizer.cc`** 包含各类优化函数(如Bundle Adjustment、位姿图优化),依赖`g2o`库(需在CMake中配置路径,见引用[4])。 --- #### 7. **工具与接口** - **`Converter.cc`** 提供数据类型转换工具(如`cv::Mat`到`Eigen::Matrix`)。 - **`Config.cc`** 解析YAML配置文件(如相机参数、特征提取阈值)[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值