docker部署的ragflow服务迁移 数据卷迁移

[docker ragflow数据迁移]目录

  • 背景
  • 一、我的配置文件
    • ✅ 数据存储路径一览(基于你的配置文件)
    • 关于这些 `volumes` 的说明
    • 📁 如何查看这些卷在本地的具体位置?
        • 可能用到的docker 命令如下。
    • 📦 总结建议
    • 🛠️ 如果想自定义这些路径
    • TODO 未完 待续 。。。

背景

通过 docker compose -f docker-compose.yml -p ragflow up -d 部署了 ragflow本地服务,现在想迁移到另一台服务器上,服务可以通过github 拉取最新的 https://github.com/infiniflow/ragflow 代码,重新配置启动。
但是原服务器上添加过的数据,比如知识库,怎么迁移到新服务器,避免重复添加,重复操作呢?

一、我的配置文件

启动 ragflow 基础配置文件如下 : docker-compose-base.yml
可以看到,各个基础服务的 volumes 数据卷名称和挂载信息

(base) root@hostname:/usr/local/soft/ai/rag/v0.19.0/ragflow/docker# vim docker-compose-base.ymlservices:es01:container_name: ragflow-es-01profiles:- elasticsearchimage: elasticsearch:${STACK_VERSION}volumes:- esdata01:/usr/share/elasticsearch/dataports:- ${ES_PORT}:9200env_file: .envenvironment:- node.name=es01- ELASTIC_PASSWORD=${ELASTIC_PASSWORD}- bootstrap.memory_lock=false- discovery.type=single-node- xpack.security.enabled=true- xpack.security.http.ssl.enabled=false- xpack.security.transport.ssl.enabled=false- cluster.routing.allocation.disk.watermark.low=5gb- cluster.routing.allocation.disk.watermark.high=3gb- cluster.routing.allocation.disk.watermark.flood_stage=2gb- TZ=${TIMEZONE}mem_limit: ${MEM_LIMIT}ulimits:memlock:soft: -1hard: -1healthcheck:test: ["CMD-SHELL", "curl http://localhost:9200"]interval: 10stimeout: 10sretries: 120networks:- ragflowrestart: on-failureopensearch01:container_name: ragflow-opensearch-01profiles:- opensearchimage: hub.icert.top/opensearchproject/opensearch:2.19.1volumes:- osdata01:/usr/share/opensearch/dataports:- ${OS_PORT}:9201env_file: .envenvironment:- node.name=opensearch01- OPENSEARCH_PASSWORD=${OPENSEARCH_PASSWORD}- OPENSEARCH_INITIAL_ADMIN_PASSWORD=${OPENSEARCH_PASSWORD}- bootstrap.memory_lock=false- discovery.type=single-node- plugins.security.disabled=false- plugins.security.ssl.http.enabled=false- plugins.security.ssl.transport.enabled=true- cluster.routing.allocation.disk.watermark.low=5gb- cluster.routing.allocation.disk.watermark.high=3gb- cluster.routing.allocation.disk.watermark.flood_stage=2gb- TZ=${TIMEZONE}- http.port=9201mem_limit: ${MEM_LIMIT}ulimits:memlock:soft: -1hard: -1healthcheck:test: ["CMD-SHELL", "curl http://localhost:9201"]interval: 10stimeout: 10sretries: 120networks:- ragflowrestart: on-failureinfinity:container_name: ragflow-infinityprofiles:- infinityimage: infiniflow/infinity:v0.6.0-dev3volumes:- infinity_data:/var/infinity- ./infinity_conf.toml:/infinity_conf.tomlcommand: ["-f", "/infinity_conf.toml"]ports:- ${INFINITY_THRIFT_PORT}:23817- ${INFINITY_HTTP_PORT}:23820- ${INFINITY_PSQL_PORT}:5432env_file: .envenvironment:- TZ=${TIMEZONE}mem_limit: ${MEM_LIMIT}ulimits:nofile:soft: 500000hard: 500000networks:- ragflowhealthcheck:test: ["CMD", "curl", "http://localhost:23820/admin/node/current"]interval: 10stimeout: 10sretries: 120restart: on-failuresandbox-executor-manager:container_name: ragflow-sandbox-executor-managerprofiles:- sandboximage: ${SANDBOX_EXECUTOR_MANAGER_IMAGE-infiniflow/sandbox-executor-manager:latest}privileged: trueports:- ${SANDBOX_EXECUTOR_MANAGER_PORT-9385}:9385env_file: .envvolumes:- /var/run/docker.sock:/var/run/docker.socknetworks:- ragflowsecurity_opt:- no-new-privileges:trueenvironment:- TZ=${TIMEZONE}- SANDBOX_EXECUTOR_MANAGER_POOL_SIZE=${SANDBOX_EXECUTOR_MANAGER_POOL_SIZE:-3}- SANDBOX_BASE_PYTHON_IMAGE=${SANDBOX_BASE_PYTHON_IMAGE:-infiniflow/sandbox-base-python:latest}- SANDBOX_BASE_NODEJS_IMAGE=${SANDBOX_BASE_NODEJS_IMAGE:-infiniflow/sandbox-base-nodejs:latest}- SANDBOX_ENABLE_SECCOMP=${SANDBOX_ENABLE_SECCOMP:-false}- SANDBOX_MAX_MEMORY=${SANDBOX_MAX_MEMORY:-256m}- SANDBOX_TIMEOUT=${SANDBOX_TIMEOUT:-10s}healthcheck:test: ["CMD", "curl", "http://localhost:9385/healthz"]interval: 10stimeout: 5sretries: 5restart: on-failuremysql:# mysql:5.7 linux/arm64 image is unavailable.image: mysql:8.0.39container_name: ragflow-mysqlenv_file: .envenvironment:- MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD}- TZ=${TIMEZONE}command:--max_connections=1000--character-set-server=utf8mb4--collation-server=utf8mb4_unicode_ci--default-authentication-plugin=mysql_native_password--tls_version="TLSv1.2,TLSv1.3"--init-file /data/application/init.sql--binlog_expire_logs_seconds=604800ports:- ${MYSQL_PORT}:3306volumes:- mysql_data:/var/lib/mysql- ./init.sql:/data/application/init.sqlnetworks:- ragflowhealthcheck:test: ["CMD", "mysqladmin" ,"ping", "-uroot", "-p${MYSQL_PASSWORD}"]interval: 10stimeout: 10sretries: 3restart: on-failureminio:image: quay.io/minio/minio:RELEASE.2025-06-13T11-33-47Zcontainer_name: ragflow-miniocommand: server --console-address ":9001" /dataports:- ${MINIO_PORT}:9000- ${MINIO_CONSOLE_PORT}:9001env_file: .envenvironment:- MINIO_ROOT_USER=${MINIO_USER}- MINIO_ROOT_PASSWORD=${MINIO_PASSWORD}- TZ=${TIMEZONE}volumes:- minio_data:/datanetworks:- ragflowrestart: on-failurehealthcheck:test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]interval: 30stimeout: 20sretries: 3redis:# swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/valkey/valkey:8image: valkey/valkey:8container_name: ragflow-rediscommand: redis-server --requirepass ${REDIS_PASSWORD} --maxmemory 128mb --maxmemory-policy allkeys-lruenv_file: .envports:- ${REDIS_PORT}:6379volumes:- redis_data:/datanetworks:- ragflowrestart: on-failurehealthcheck:test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "ping"]interval: 5stimeout: 3sretries: 3start_period: 10svolumes:esdata01:driver: localosdata01:driver: localinfinity_data:driver: localmysql_data:driver: localminio_data:driver: localredis_data:driver: localnetworks:ragflow:driver: bridg

根据上面提供的 docker-compose-base.yml 配置文件内容,下面是 RAGFlow 各个组件在本地的数据存储路径说明:


✅ 数据存储路径一览(基于你的配置文件)

组件容器内路径本地路径(默认)用途说明
MySQL/var/lib/mysqlmysql_data(默认在 Docker 管理的 volume 中)存储用户、文档元数据等结构化信息
MinIO/dataminio_data(Docker volume)存储上传的原始文档、处理后的文本等
Elasticsearch (es01)/usr/share/elasticsearch/dataesdata01(Docker volume)存储关键词搜索索引数据
OpenSearch (opensearch01)/usr/share/opensearch/dataosdata01(Docker volume)可选搜索引擎,用于检索
Infinity(向量数据库)/var/infinityinfinity_data(Docker volume)存储向量索引
Redis/dataredis_data(Docker volume)缓存数据、任务状态等
Sandbox Executor Manager无持久化数据用于运行沙箱任务,不持久化

关于这些 volumes 的说明

你在 docker-compose-base.yml 文件末尾定义了如下 volume:

volumes:esdata01:driver: localosdata01:driver: localinfinity_data:driver: localmysql_data:driver: localminio_data:driver: localredis_data:driver: local

这些 volumesDocker 管理的命名卷(named volumes),默认情况下它们会存储在 Docker 的默认数据目录中:

  • Linux 系统下通常为:/var/lib/docker/volumes/<volume_name>/_data

例如:

  • MySQL 数据实际路径为:/var/lib/docker/volumes/mysql_data/_data
  • MinIO 数据实际路径为:/var/lib/docker/volumes/minio_data/_data

📁 如何查看这些卷在本地的具体位置?

可能用到的docker 命令如下。

📦 总结建议

目标建议
查看数据存储位置使用 docker volume inspect <volume_name>
备份数据备份对应路径,如 /var/lib/docker/volumes/mysql_data/_data
自定义路径修改 docker-compose-base.yml 中的 volumes 配置
清理数据删除对应 volume,如 docker volume rm mysql_data

所以,我们想查看某个 volume 的实际路径,可以有两种方法:

  • find / -name ‘esdata01
  • docker volume inspect xxxx

本次我们使用如下命令,esdata01 是从上面配置文件中获悉:

(base) root@hostname:/home/ltkj# docker volume inspect esdata01
[]
Error response from daemon: get esdata01: no such volume(base) root@hostname:/home/ltkj# docker volume inspect ragflow_esdata01

输出示例:


[{"CreatedAt": "2025-06-13T10:52:28Z","Driver": "local","Labels": {"com.docker.compose.config-hash": "3bcef595c5f477c290ccaa07cbf05671d287fef95c1fa4b67fad841e66481794","com.docker.compose.project": "ragflow","com.docker.compose.version": "2.34.0","com.docker.compose.volume": "esdata01"},"Mountpoint": "/var/lib/docker/volumes/ragflow_esdata01/_data","Name": "ragflow_esdata01","Options": null,"Scope": "local"}
]

在这里插入图片描述

这样就能知道 esdata01,minio,MySQL 等基础服务的数据存在哪里了。
在这里插入图片描述


🛠️ 如果想自定义这些路径

可以在 volumes 配置中指定本地路径,例如:

volumes:mysql_data:driver: localdriver_opts:type: noneo: binddevice: /opt/ragflow/mysql_data

这样 MySQL 数据就会存在 /opt/ragflow/mysql_data


TODO 未完 待续 。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/90539.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/90539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Chrome插件学习笔记(三)

Chrome插件学习笔记&#xff08;三&#xff09; 参考文章&#xff1a; https://blog.csdn.net/guoqiankunmiss/article/details/135847091https://blog.csdn.net/guoqiankunmiss/article/details/135974364 1、项目搭建 在前两篇文章中使用的原生js去操作dom&#xff0c;很费劲…

Android系统中的4KB内存页简介

deepseek回答&#xff1a; Android系统中的4KB内存页是虚拟内存管理的最小单位&#xff0c;其主要用途如下&#xff1a; 一、核心功能 虚拟地址映射 应用程序访问内存时&#xff0c;系统将虚拟地址按4KB页框映射到物理内存或磁盘空间&#xff0c;实现进程间的内存隔离和安全访…

【Chrome】下载chromedriver的地址

下载chromedriver的地址低版本的最新版本的低版本的 http://chromedriver.storage.googleapis.com/index.html 最新版本的 https://googlechromelabs.github.io/chrome-for-testing/#stable

ISP算法——从颜色恒常性到白平衡

前面文章&#xff0c;介绍了人眼感知的物体颜色取决于光源的光谱组成与物体表面的光谱反射特性之间的相互作用。人类视觉的颜色感知是生物机制与认知智能协同作用的结果&#xff0c;人眼视网膜上的视锥细胞检测光的颜色&#xff0c;视杆细胞分析光的亮度&#xff0c;再共同转化…

工业缺陷检测的计算机视觉方法总结

工业缺陷检测的计算机视觉方法总结 传统方法 特征提取方式&#xff1a; 颜色&#xff1a;基于HSV/RGB空间分析&#xff0c;如颜色直方图、颜色矩等纹理&#xff1a;采用LBP、Haar、Gabor滤波器等算子提取纹理模式形状&#xff1a;基于Hu矩、Zernike矩等数学描述符刻画几何特性尺…

js实现宫格布局图片放大交互动画

可直接运行代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>五图交互布局</title><style>* {box-sizing: border-box;margin: 0;padding: 0;}.gallery {display: grid;grid-template-c…

easyexcel流式导出

EasyExcel 支持流式导出&#xff0c;这是它的一个重要特性。流式导出可以有效解决大数据量导出时的内存溢出问题。流式导出的优势内存友好 &#xff1a;不会一次性将所有数据加载到内存中适合大数据量 &#xff1a;可以处理百万级甚至更多的数据性能稳定 &#xff1a;内存占用相…

广州 VR 安全用电技术:工作原理、特性及优势探析​

&#xff08;一&#xff09;沉浸式学习体验​ 在广州&#xff0c;VR 用电安全培训技术给用电安全培训带来变革。借助头戴式显示设备等硬件&#xff0c;结合 3D 建模和实时渲染技术&#xff0c;打造广州特色用电场景。员工戴上 VR 设备进入虚拟电力场景&#xff0c;能看到电气设…

2.Linux 网络配置

Linux: 网络配置 版本为centos7 网卡配置文件&#xff1a; /etc/sysconfig/network-scripts/ifcfg-ens33 [rootkami /]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 TYPEEthernet /类型&#xff1a;以太网 PROXY_METHODnone BROWSER_ONLYno BOOTPROTOnone /网络配…

FPGA Verilog 入门语法指南

FPGA Verilog 入门语法指南 📋 目录 Verilog与C语言对比 基础关键字 数据类型 运算符 控制结构 数值表示 阻塞与非阻塞赋值 模块结构 预处理指令

【鸿蒙HarmonyOS Next App实战开发】视频提取音频

在多媒体处理场景中&#xff0c;经常需要从视频文件中提取纯净的音频轨道。本文将介绍如何在HarmonyOS应用中实现这一功能&#xff0c;核心代码基于ohos/mp4parser库的FFmpeg能力。 功能概述 我们实现了一个完整的视频音频提取页面&#xff0c;包含以下功能&#xff1a; 通过…

OpenHands:Manus 最强开源平替——本地部署与实战指南

文章目录⚙️ 一、OpenHands 核心优势&#xff1a;为何是 Manus 最佳平替&#xff1f;&#x1f9e0; 二、核心架构解析&#xff1a;多智能体如何协同工作&#xff1f;&#x1f6e0;️ 三、本地化部署指南&#xff1a;Docke部署Docker 极速部署&#xff08;推荐&#xff09;&…

用 AI 做数据分析:从“数字”里挖“规律”

数据整理干净后&#xff0c;就得分析了——算平均值、看差异、找关系&#xff0c;这些都能靠 AI 搞定。这节以“大学生在线学习满意度”数据为例&#xff0c;教你用 AI 做描述性统计、假设检验、相关性分析&#xff0c;一步步从数据里挖规律&#xff0c;超详细&#xff5e; 1. …

小程序安卓ApK转aab文件详情教程MacM4环境

根据Google Play的政策要求&#xff0c;自 2021 年 8 月起&#xff0c;Google Play 将开始要求新应用使用 Android App Bundle&#xff08;以下简称aab&#xff09; 进行发布。该格式将取代 APK 作为标准发布格式。 想了解更多关于aab的介绍可以直接阅读android官方文档&#x…

率先通过自动制冰性能认证,容声冰箱推动行业品质升级

日前&#xff0c;容声冰箱“电冰箱自动制冰性能认证”由中国家用电器研究院测试并通过&#xff0c;该认证为行业首次。这标志着中国家电行业在冰箱自动制冰功能的技术规范与品质保障领域树立了全新里程碑&#xff0c;也将洁净、高效的制冰体验带入中国家庭日常生活。目前&#…

大模型-batch之continuous batching

一、ORCA1.1 ORCA 概览看下Continuous Batching 技术的开山之作ORCA,这个其实是融合的思路。ORCA&#xff1a;把调度粒度从请求级别调整为迭代级别&#xff0c;并结合选择性批处理&#xff08;selective batching&#xff09;来进行优化。Sarathi[2] &#xff1a;利用Chunked P…

主要分布在背侧海马体(dHPC)CA1区域(dCA1)的时空联合细胞对NLP中的深层语义分析的积极影响和启示

时空联合细胞&#xff08;Spatiotemporal Conjunctive Cells&#xff09;主要分布在背侧海马体CA1区&#xff08;dCA1&#xff09;&#xff0c;其核心功能是​​同步编码空间位置、时间信息和行为意图​​&#xff0c;形成动态的情景记忆表征。这种神经机制为自然语言处理&…

操作系统:系统程序(System Programs)

目录 常见的系统程序类型 1️⃣ 文件管理&#xff08;File Management&#xff09; 2️⃣ 状态信息&#xff08;Status Information&#xff09; 3️⃣ 编译器和程序开发&#xff08;Program Language Support&#xff09; 4️⃣ 程序执行控制类&#xff08;Program Load…

【知识图谱】Neo4j Desktop桌面版中国区被禁(无法打开)问题解决方法

【知识图谱】Neo4j Desktop桌面版进程运行无法打开,UI 界面无法显示问题解决办法 前言 1.问题形式 2.原因分析 3.解决方法 3.1 方法一,断网 3.2 方法二,手动设置代理 4.启动Neo4j Desktop 前言 Neo4j Desktop桌面版安装教程参考链接: https://zskp1012.blog.csdn.net/artic…

安装acunetix软件之后改www.ddosi.org.bat文件

安装环境&#xff1a;windows11 通过网盘分享的文件&#xff1a;Acunetix_15.2.221208162_www.ddosi.org.zip 链接: https://pan.baidu.com/s/1FPFFr583FFFj6hxWB-Ygng?pwdjpim 提取码: jpim 下载后文件是&#xff1a; 解压之后&#xff0c;如下图&#xff1a; 安装步骤如…