百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

离线在docker镜像方式部署ragflow0.17.2

csdh11 2025-05-25 11:45 5 浏览

经常项目上会出现不能连外网的情况,要怎么使用ragflow镜像部署呢,这里提供详细的步骤。

1、下载基础镜像

根据docker-compose-base.yml及docker-compose.yml中的image配置信息,下载所需要的基础服务镜像。

# 创建资源目录
mkdir -p /data/ragflow-offline/{docker-images,pip-packages}
cd /data/ragflow-offline


# 拉取并保存所有所需镜像
docker pull elasticsearch:8.11.3
#infinity和elasticsearch可以二选一下载
docker pull infiniflow/infinity:v0.6.0-dev3
#8+版本的mysql才支持向量数据
docker pull mysql:8.0.39
docker pull quay.io/minio/minio:RELEASE.2023-12-20T01-00-02Z
docker pull valkey/valkey:8

当使用sudo docker save时,虽然docker命令以root权限执行,但输出重定向操作(>)仍受当前用户目录权限限制。需要确保操作路径有足够权限,所以要先通过以下命令给足够的权限。

sudo chmod 777 /data/ragflow-offline/docker-images  # 临时放宽权限

再执行下面的保存命令

sudo docker save elasticsearch:8.11.3 > docker-images/elasticsearch-8.11.3.tar
sudo docker save infiniflow/infinity:v0.6.0-dev3 > docker-images/infinity-v0.6.0-dev3.tar
sudo docker save mysql:8.0.39 > docker-images/mysql-8.0.39.tar
sudo docker save quay.io/minio/minio:RELEASE.2023-12-20T01-00-02Z > docker-images/minio-2023-12-20.tar
sudo docker save valkey/valkey:8 > docker-images/valkey-8.tar


二、下载Ragflow

1、下载RagFlow,github上可能很慢,找一个gitee上的地址

cd /data
sudo git clone https://gitee.com/da_xu/ragflow.git
cd ragflow

2、配置python虚拟环境,如果已有请跳过

#安装venv
sudo apt install python3.12-venv
# 创建虚拟环境
sudo python3 -m venv .venv
#激活虚拟环境
source .venv/bin/activate
#安装所需要的依赖,可能会遇到很多版本问题,比如我是python3.12,要提示修改一些依赖版本
pip install -r requirements.txt

需要修改的依赖版本如下:

Pillow=10.3.0修改为11.1.0
torch=2.3.0修改为2.3.1

torch直接安装大概有800多M,看网络情况可能会超时,所以我直接选择先下载,下载地址:


https://download.pytorch.org/whl,找到你合适的版本

或者从阿里巴巴的镜像下载:
https://mirrors.aliyun.com/pypi/simple

然后使用以下命令安装

#下载
sudo wget https://download.pytorch.org/whl/cpu/torch-2.3.1%2Bcpu-cp312-cp312-linu
x_x86_64.whl#sha256=2141a6cb7021adf2f92a0fd372cfeac524ba460bd39ce3a641d30a561e41f69a
#安装torch
pip install torch-2.3.1+cpu-cp312-cp312-linux_x86_64.whl

以上可能会出现没有权限的问题,如下报错:

Installing collected packages: mpmath, typing-extensions, sympy, networkx, MarkupSafe, fsspec, filelock, jinja2, torch ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied: '/data/ragflowd/.venv/lib/python3.12/site-packages/mpmath' Check the permissions.

解决方式如下:

# 进入虚拟环境上级目录
cd /data/ragflow

# 递归修改虚拟环境目录所有权(替换 <your_username> 为实际用户名)
sudo chown -R <your_username>:<your_group> .venv

# 赋予读写执行权限
sudo chmod -R 755 .venv

#或者如下操作
# 确保 /data/ragflow 目录允许当前用户操作
sudo chown -R $USER:$USER /data/ragflow
sudo chmod -R 755 /data/ragflow
#然后重新安装torch
pip install torch-2.3.1+cpu-cp312-cp312-linux_x86_64.whl

如果再遇到安装超时的问题,就采用以上方式先下载whl文件,然后单独安装,然后再安装其它的依赖。

比如又碰到160M的xgboost无法安装,如图操作:


其它比较大的whl下载:

sudo wget https://mirrors.aliyun.com/pypi/packages/67/ca/f42388aed0fddd64ade7493dbba36e1f534d4e6fdbdd355c6a90030ae028/nvidia_nccl_cu12-2.26.2-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl#sha256=694cf3879a206553cc9d7dbda76b13efaf610fdb70a50cba303de1b0d1530ac6

sudo wget https://mirrors.aliyun.com/pypi/packages/92/0f/a6eeabc9d4f3dffa52d629ba2aedce3c3953a49340a65ef49be85eb26cc1/Aspose.Slides-25.2.0-py3-none-manylinux1_x86_64.whl#sha256=d60bacea1fd43d09ae1351e7a1a1c0790ff80ca7955ceb95823e47f6b39f6b91

三、打包.venv中已下载的包到pip-packages文件夹中

# 在本地开发环境执行
cd /data/ragflow
sudo tar czvf /data/ragflow-offline/pip-packages/venv.tar.gz .venv/

四、离线环境部署步骤

1. 传输离线资源到目标服务器

将以下目录复制到目标服务器/data/ragflow_inner:

sudo mkdir /data/ragflow_inner
cd /data/ragflow_inner
sudo cp -r /data/ragflow-offline/docker-images/ .
sudo cp -r /data/ragflow-offline/pip-packages/ .

2. 加载Docker镜像

cd /data/ragflow_inner
for img in docker-images/*.tar; do
    docker load -i $img
done

3. 恢复Python虚拟环境

# 解压已有虚拟环境
sudo tar xzvf pip-packages/venv.tar.gz -C /data/ragflow_inner/

4、优化配置

新的docker-compose.yml

services:
  elasticsearch:
    image: elasticsearch:8.11.3
    pull_policy: never
    environment:
      - discovery.type=single-node
      - ES_JAVA_OPTS=-Xms4g -Xmx4g
    volumes:
      - /data/ragflow_inner/data/elasticsearch:/usr/share/elasticsearch/data
    ports:
      - "9200:9200"
    healthcheck:
      test: ["CMD-SHELL", "curl --silent --fail localhost:9200/_cluster/health || exit 1"]

  infinity:
    image: infiniflow/infinity:v0.6.0-dev3
		pull_policy: never
    ports:
      - "8088:8088"
    depends_on:
      elasticsearch:
        condition: service_healthy

  mysql:
    image: mysql:8.0.39
		pull_policy: never
    environment:
      MYSQL_ROOT_PASSWORD: ragflow@2024
      MYSQL_DATABASE: ragflow
    volumes:
      - /data/ragflow_inner/data/mysql:/var/lib/mysql
    ports:
      - "3306:3306"
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]

  minio:
    image: quay.io/minio/minio:RELEASE.2023-12-20T01-00-02Z
    pull_policy: never
    command: server /data --console-address ":9001"
    volumes:
      - /data/ragflow_inner/data/minio:/data
    ports:
      - "9000:9000"
      - "9001:9001"
    environment:
      MINIO_ROOT_USER: ragflowadmin
      MINIO_ROOT_PASSWORD: ragflow@minio

  valkey:
    image: valkey/valkey:8
		pull_policy: never
    ports:
      - "6379:6379"
    volumes:
      - /data/ragflow_inner/data/valkey:/data

  server:
    image: infiniflow/ragflow:0.17.2
		pull_policy: never
    environment:
      DB_HOST: mysql
      DB_PORT: 3306
      DB_NAME: ragflow
      DB_USER: root
      DB_PASSWORD: ragflow@2024
      MINIO_ENDPOINT: minio:9000
      MINIO_ACCESS_KEY: ragflowadmin
      MINIO_SECRET_KEY: ragflow@minio
      HF_ENDPOINT: ""  # 显式声明空变量避免警告
      MACOS: ""        # 同上
    volumes:
      - /data/ragflow_inner/logs:/app/logs
      - /data/ragflow_inner/models:/app/models
      - /data/ragflow_inner/.venv:/opt/venv  # 挂载已有虚拟环境
    ports:
      - "8000:8000"
    depends_on:
      mysql:
        condition: service_healthy
      minio:
        condition: service_started
      valkey:
        condition: service_started

5. 启动服务

# 创建数据目录
sudo mkdir -p /data/ragflow_inner/data/{elasticsearch,mysql,minio,valkey}

# 设置文件权限
sudo chmod -R 777 /data/ragflow_inner/data

# 启动所有服务
cd /data/ragflow_inner/docker
sudo docker compose -f docker-compose.yml up -d

#验证服务,输出如下图
sudo docker compose ps
sudo docker exec -it ragflow-server bash
source .venv/bin/activate


相关推荐

USB转TTL(CH340)模块测试

一.简介USB转TTL串口模块是一个非常实用的工具,可以测试模块的UART串口通信和通过单片机的UART接口给单片机等下载程序。能够在电脑上的串口助手软件非常直观的显示出串口设备返回的数据以及发送相...

微软更新基于Win11的Validation OS 2504:增强 .NET与WPF

IT之家5月1日消息,科技媒体NeoWin今天(5月1日)发布博文,报道称微软公司更新基于Windows11的ValidationOS,增强支持.NET和WPF,并优...

STM32串口通信基本原理

设备之间通信的方式...

0基础自学PLC且顺利入门,这8章知识点104页PPT非你莫属

零基础如何自学PLC并顺利入门呢?之前小编教了大家很多学习方法,这次要说的将是直接命中PLC知识点的具体内容,将分为八章内容分别讲述,一起来看看!第一章、PLC周边常用器件介绍及简单应用包含了按钮开关...

单片机STM32开发,自学第一天

小白斗胆发文总结自己的学习过程,有错误之处还希望有大佬指正。俗话说吃不了学习的苦,就得吃体力劳动的苦,从今天开始记录我的学习全过程,希望我能每天坚持下来。一、开门见山,一开始就是搭建开发环境。...

Android收银机如何直接驱动钱箱?我们来详细分析硬件RJ11接口

  钱箱的英文是CashDrawer,就是通常放在收银机下用来放现金的箱子。虽然现在很多支付采用网络支付,但是零售业很多时候要保留一个钱箱来保存收到现金  传统流程是通过小票打印机的RJ11接口来驱...

WinForm 中玩转串口通信:从基础到实战

...

Windows外置设备驱动开发

在Windows上开发外置设备(如USB、蓝牙、PCIe等)的驱动程序需要遵循微软的驱动开发框架和工具链。以下是详细的步骤和关键点:1.开发环境准备工具安装:OVisualStudio:用于代码...

串口屏十大高频问题:花屏、通信失败、触控漂移全解决

在工业控制、智能设备等领域,串口屏以其便捷的交互性、简单的通信方式,成为了信息展示与操作的重要窗口。然而,在实际使用过程中,串口屏也常出现一些问题,影响设备的正常运行与用户体验。下面将针对花屏、通信失...

随身如意宝 瑞工MLP80A便携标签机试用

【中关村在线办公打印频道原创】瑞工科技专业提供针对行业用户的打印方案,这次我们拿到了它最新的RG-MLP80A便携标签打印机,面向物流仓储、移动执法、医疗设备等行业的标签打印应用。开箱之初它是由一个带...

ANS-DB003M蓝牙音频串口开发板,音乐数据传输全能选手

在物联网与智能硬件爆发的时代,开发者急需一款能同时攻克音频处理与数据通信痛点的全能工具。ANS-DB003M的出现,或许正是答案。今天,我们就来深度测评一款备受瞩目的产品—ANS-DB003M蓝牙音频...

Spartan-6开发案例使用手册——嵌入式AD模块/接口基础测试(上)

前言本指导文档适用的开发环境为Windows764bit和Windows1064bit。本文档主要提供开发板FPGA端案例测试方法,所有工程均位于产品资料Demo1目录下。进行本文档操作前,...

Arduino 实例(三十九)启动esp32-cam视频监控及遇到的坑

1esp32-cam使用中,是迄今为止,遇到的最多坑的一次,我将这些记录下来,以期对后来初次使用这个模块的朋友有所启发和借鉴a)我购买这个模块时,除了买esp32-cam模块,还买了母版,但没...

「正点原子Linux连载」第四章开发环境搭建(2)

1)实验平台:正点原子Linux开发板2)摘自《正点原子I.MX6U嵌入式Linux驱动开发指南》关注官方微信号公众号,获取更多资料:正点原子...

网络机顶盒电视盒子TTL连接方法可用于刷机备份救砖安装软件

过期网络机顶盒变废为宝的方法有很多种,有的用优盘卡刷,有的用双头USB线刷,还有的就需要借助TTL刷机板来操作刷机升级了,今天分享一下TTL刷机板连接电脑的方法1、我用的是CH340G的刷机板还是土...