第二节:RAGFlow基于CentOS系统在Docker自定义安装部署

一、说明

  1. 网上很多都是直接部署, 镜像太大, 很慢, 以下是基于Linux, 下载镜像, 上传自己的仓库, 并做挂载数据归一化部署
  2. 老样子, 无废话, 直接开干
  3. 服务器环境要求
  4. 基于《第一节:DeepSeek基于CentOS虚拟机部署》进行操作
CPU >= 4 cores
RAM >= 16 GB
Disk >= 50 GB
Docker >= 24.0.0 & Docker Compose >= v2.26.1
  1. 各种版本对比

RAGFlow镜像版本对比表

镜像标签 镜像大小(GB) 包含嵌入模型 稳定性说明
v0.17.2 ≈9 ✔️ 包含 稳定发布版本
v0.17.2-slim ≈2 ❌ 不包含 稳定发布版本
nightly ≈9 ✔️ 包含 不稳定的夜间构建版本
nightly-slim ≈2 ❌ 不包含 不稳定的夜间构建版本

建议根据实际需求选择:
✅ 需要嵌入模型 → 选标准版
✅ 资源有限 → 选slim版
⚠️ 测试新功能 → 选nightly版(需注意稳定性风险)

此外: 当前文档, 安装RAGFlow-v0.17.2 稳定发布版本, 且包含嵌入模型, 大家根据自己情况安装

此外: 当前文档, 安装RAGFlow-v0.17.2 稳定发布版本, 且包含嵌入模型, 大家根据自己情况安装

此外: 当前文档, 安装RAGFlow-v0.17.2 稳定发布版本, 且包含嵌入模型, 大家根据自己情况安装

二、自定义安装前准备

  1. 服务创建文件夹
[root@gitlab software]# mkdir -p /home/troila/software/ragflow
  1. 下载ragflow对应版本
    • 当前版本为v0.17.2
[root@gitlab software]# cd ragflow
[root@gitlab ragflow]# wget https://github.com/infiniflow/ragflow/archive/refs/tags/v0.17.2.tar.gz
  1. 下载后解压
[root@gitlab ragflow]# tar -zxvf v0.17.2.tar.gz
[root@gitlab ragflow]# ll
总用量 46416
drwxrwxr-x. 17 root root     4096 3月  13 15:59 ragflow-0.17.2
-rw-r--r--.  1 root root 47524235 3月  17 16:58 v0.17.2.tar.gz
  1. 进入ragflow-0.17.2/docker查看安装yml
[root@gitlab ragflow]# cd ragflow-0.17.2/docker/
[root@gitlab docker]# ll
总用量 56
-rw-rw-r--. 1 root root 3658 3月  13 15:59 docker-compose-base.yml
-rw-rw-r--. 1 root root 1128 3月  13 15:59 docker-compose-CN-oc9.yml
-rw-rw-r--. 1 root root 1290 3月  13 15:59 docker-compose-gpu-CN-oc9.yml
-rw-rw-r--. 1 root root 1251 3月  13 15:59 docker-compose-gpu.yml
-rw-rw-r--. 1 root root 1853 3月  13 15:59 docker-compose-macos.yml
-rw-rw-r--. 1 root root 1789 3月  13 15:59 docker-compose.yml
-rwxrwxr-x. 1 root root  706 3月  13 15:59 entrypoint-parser.sh
-rwxrwxr-x. 1 root root  759 3月  13 15:59 entrypoint.sh
-rw-rw-r--. 1 root root 2075 3月  13 15:59 infinity_conf.toml
-rw-rw-r--. 1 root root   53 3月  13 15:59 init.sql
-rw-rw-r--. 1 root root 2855 3月  13 15:59 launch_backend_service.sh
drwxrwxr-x. 2 root root   62 3月  13 15:59 nginx
-rw-rw-r--. 1 root root 7202 3月  13 15:59 README.md
-rw-rw-r--. 1 root root 2441 3月  13 15:59 service_conf.yaml.template
[root@gitlab docker]# 

三, 自定义安装准备(如果自己的服务器可以连接docker镜像官网请忽略, 镜像较大建议大家先下载在部署, 不然过程很慢)

  1. 镜像准备
    • 从.env中过滤出镜像
    • 在解压后的 ragflow-0.17.2/docker/.env 里面
[root@gitlab ragflow]# cat ragflow-0.17.2/docker/.env | grep RAGFLOW_IMAGE

## 此镜像后续替换为自己的镜像, 当前只是过滤出来, 方便后续统一改
RAGFLOW_IMAGE=infiniflow/ragflow:v0.17.2-slim

# RAGFLOW_IMAGE=infiniflow/ragflow:v0.17.2
# RAGFLOW_IMAGE=swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow:nightly-slim
# RAGFLOW_IMAGE=registry.cn-hangzhou.aliyuncs.com/infiniflow/ragflow:nightly-slim
# RAGFLOW_IMAGE=swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow:nightly
# RAGFLOW_IMAGE=registry.cn-hangzhou.aliyuncs.com/infiniflow/ragflow:nightly
[root@gitlab ragflow]# 
  • 从docker-compose-base.yml中过滤出所有镜像
[root@gitlab docker]# cat docker-compose-base.yml | grep image
    image: elasticsearch:${STACK_VERSION}
    image: infiniflow/infinity:v0.6.0-dev3
    # mysql:5.7 linux/arm64 image is unavailable.
    image: mysql:8.0.39
    image: quay.io/minio/minio:RELEASE.2023-12-20T01-00-02Z
    image: valkey/valkey:8
[root@gitlab docker]# 
  1. 镜像处理
    • 上面两个文件过滤出了6个镜像, 如果已经有了以上部分镜像且版本差别不大, 可以下载自己需要的镜像即可, 我这里保持和过滤镜像版本一致, 以免版本有坑
    • 下载镜像存入自己的仓库中(base.troila.com:9000/library)
## ragflow 镜像处理
[root@base ~]# docker pull infiniflow/ragflow:v0.17.2
[root@base ~]# docker tag infiniflow/ragflow:v0.17.2 base.troila.com:9000/library/ragflow:v0.17.2
[root@base ~]# docker push base.troila.com:9000/library/ragflow:v0.17.2

## elasticsearch 镜像处理
[root@base ~]# docker pull elasticsearch:8.11.3
[root@base ~]# docker tag elasticsearch:8.11.3 base.troila.com:9000/library/elasticsearch:8.11.3
[root@base ~]# docker push base.troila.com:9000/library/elasticsearch:8.11.3

## infinity 镜像处理
[root@base ~]# docker pull infiniflow/infinity:v0.6.0-dev3
[root@base ~]# docker tag infiniflow/infinity:v0.6.0-dev3 base.troila.com:9000/library/infinity:v0.6.0-dev3
[root@base ~]# docker push base.troila.com:9000/library/infinity:v0.6.0-dev3

## mysql 镜像处理
[root@base ~]# docker pull mysql:8.0.39
[root@base ~]# docker tag mysql:8.0.39 base.troila.com:9000/library/mysql:8.0.39
[root@base ~]# docker push base.troila.com:9000/library/mysql:8.0.39

## minio 镜像处理
[root@base ~]# docker pull minio/minio:RELEASE.2023-12-20T01-00-02Z
[root@base ~]# docker tag minio/minio:RELEASE.2023-12-20T01-00-02Z base.troila.com:9000/library/minio:RELEASE.2023-12-20T01-00-02Z
[root@base ~]# docker push base.troila.com:9000/library/minio:RELEASE.2023-12-20T01-00-02Z

## valkey redis镜像处理
[root@base ~]# docker pull valkey/valkey:8
[root@base ~]# docker tag valkey/valkey:8 base.troila.com:9000/library/valkey:8
[root@base ~]# docker push base.troila.com:9000/library/valkey:8

  1. 替换镜像地址
    • 更改.env文件镜像
    • 注意此处我安装的是稳定版, 且自带一些内嵌模型, 大家根据自己需要安装
    • 更改结果如下
[root@gitlab ragflow]# vi ragflow-0.17.2/docker/.env

........
  
# The RAGFlow Docker image to download.
# Defaults to the v0.17.2-slim edition, which is the RAGFlow Docker image without embedding models.

  
  ## 注释掉之前的镜像, 更改成自己仓库中的镜像
## RAGFLOW_IMAGE=infiniflow/ragflow:v0.17.2-slim
RAGFLOW_IMAGE=base.troila.com:9000/library/ragflow:v0.17.2
  
#
# To download the RAGFlow Docker image with embedding models, uncomment the following line instead:
# RAGFLOW_IMAGE=infiniflow/ragflow:v0.17.2
#
# The Docker image of the v0.17.2 edition includes:
# - Built-in embedding models:
#   - BAAI/bge-large-zh-v1.5
#   - BAAI/bge-reranker-v2-m3
#   - maidalun1020/bce-embedding-base_v1
#   - maidalun1020/bce-reranker-base_v1
# - Embedding models that will be downloaded once you select them in the RAGFlow UI:
#   - BAAI/bge-base-en-v1.5
#   - BAAI/bge-large-en-v1.5
#   - BAAI/bge-small-en-v1.5
#   - BAAI/bge-small-zh-v1.5
#   - jinaai/jina-embeddings-v2-base-en
#   - jinaai/jina-embeddings-v2-small-en
#   - nomic-ai/nomic-embed-text-v1.5
#   - sentence-transformers/all-MiniLM-L6-v2

........

[root@gitlab ragflow]#
  • 更改docker-compose-base.yml镜像
  • 更改后结果如下
[root@gitlab docker]# cat docker-compose-base.yml | grep image
    image: base.troila.com:9000/library/elasticsearch:${STACK_VERSION}
    image: base.troila.com:9000/library/infinity:v0.6.0-dev3
    # mysql:5.7 linux/arm64 image is unavailable.
    image: base.troila.com:9000/library/mysql:8.0.39
    image: base.troila.com:9000/library/minio:RELEASE.2023-12-20T01-00-02Z
    image: base.troila.com:9000/library/valkey:8
[root@gitlab docker]# 
  1. 创建容器挂载卷(非必要, 个人有洁癖, 数据乱放, 感觉很别扭)
    • 目的是挂载数据统一目录管理
    • 后期删除方便
## 绝对路径
[root@gitlab ragflow]# pwd
/home/troila/software/ragflow

## 创建容器需要挂载的文件夹(数据、日志、配置)
[root@gitlab ragflow]# mkdir -p data/ragflow/ragflow-logs
[root@gitlab ragflow]# mkdir -p data/elasticsearch/esdata01
[root@gitlab ragflow]# mkdir -p data/infinity/infinity_data
[root@gitlab ragflow]# mkdir -p data/mysql/mysql_data
[root@gitlab ragflow]# mkdir -p data/minio/minio_data
[root@gitlab ragflow]# mkdir -p data/redis/redis_data

[root@gitlab ragflow]# ll data
总用量 0
drwxr-xr-x. 3 root root 22 3月  17 17:51 elasticsearch
drwxr-xr-x. 3 root root 53 3月  17 17:55 infinity
drwxr-xr-x. 3 root root 24 3月  17 17:53 minio
drwxr-xr-x. 3 root root 40 3月  17 17:55 mysql
drwxr-xr-x. 2 root root 62 3月  17 19:07 ragflow
drwxr-xr-x. 3 root root 24 3月  17 17:53 redis
  1. 放开挂载文件操作权限
    • 确保所有创建的文件夹都有读写权限
[root@gitlab ragflow]# chmod 777 data/**/*
  1. 复制挂载必要数据、配置, ,到上述创建的文件对应目录下
## ragflow 配置挂载
[root@gitlab ragflow]# cp ragflow-0.17.2/docker/nginx/ragflow.conf data/ragflow/
[root@gitlab ragflow]# cp ragflow-0.17.2/docker/nginx/proxy.conf data/ragflow/
[root@gitlab ragflow]# cp ragflow-0.17.2/docker/nginx/nginx.conf data/ragflow/

## mysql 配置挂载
[root@gitlab ragflow]# cp ragflow-0.17.2/docker/init.sql data/mysql/

## infinity 配置挂载
[root@gitlab ragflow]# cp ragflow-0.17.2/docker/infinity_conf.toml data/infinity/

## 完成后的目录结构
root@gitlab ragflow]# tree data/
data/
├── elasticsearch
│   └── esdata01
├── infinity
│   ├── infinity_conf.toml
│   └── infinity_data
├── minio
│   └── minio_data
├── mysql
│   ├── init.sql
│   └── mysql_data
├── ragflow
│   ├── nginx.conf
│   ├── proxy.conf
│   ├── ragflow.conf
│   └── ragflow-logs
└── redis
    └── redis_data

12 directories, 5 files
[root@gitlab ragflow]# 

  1. 更改docker-compose-base.yml中各个组件的挂载地址
    • 更改后的结果如下
[root@gitlab ragflow]# cat ragflow-0.17.2/docker/docker-compose-base.yml | grep volume -A 2
    volumes:
      - /home/troila/software/ragflow/data/elasticsearch/esdata01:/usr/share/elasticsearch/data
    ports:
--
    volumes:
      - /home/troila/software/ragflow/data/infinity/infinity_data:/var/infinity
      - /home/troila/software/ragflow/data/infinity/infinity_conf.toml:/infinity_conf.toml
--
    volumes:
      - /home/troila/software/ragflow/data/mysql/mysql_data:/var/lib/mysql
      - /home/troila/software/ragflow/data/mysql/init.sql:/data/application/init.sql
--
    volumes:
      - /home/troila/software/ragflow/data/minio/minio_data:/data
    networks:
--
    volumes:
      - /home/troila/software/ragflow/data/redis/redis_data:/data
    networks:
   
## 注释掉
##volumes:
##  esdata01:
##    driver: local
##  infinity_data:
##    driver: local
##  mysql_data:
##    driver: local
##  minio_data:
##    driver: local
##  redis_data:
##    driver: local
  1. 更改docker-compose.yml中ragflow挂载信息
    • 更改后的结果如下
[root@gitlab ragflow]# cat ragflow-0.17.2/docker/docker-compose.yml | grep volume -A 4
    volumes:
      - /home/troila/software/ragflow/data/ragflow/ragflow-logs:/ragflow/logs
      - /home/troila/software/ragflow/data/ragflow/ragflow.conf:/etc/nginx/conf.d/ragflow.conf
      - /home/troila/software/ragflow/data/ragflow/proxy.conf:/etc/nginx/proxy.conf
      - /home/troila/software/ragflow/data/ragflow/nginx.conf:/etc/nginx/nginx.conf

[root@gitlab ragflow]# 
  1. 开始安装
    • 我这离端口号80, 9000 冲突了, 这块自行修改
[root@gitlab docker]# pwd
/home/troila/software/ragflow/ragflow-0.17.2/docker

[root@gitlab docker]#cd /home/troila/software/ragflow/ragflow-0.17.2/docker
[root@gitlab docker]# docker compose -f docker-compose.yml up -d
WARN[0000] The "HF_ENDPOINT" variable is not set. Defaulting to a blank string. 
WARN[0000] The "MACOS" variable is not set. Defaulting to a blank string. 
[+] Running 6/6
 ✔ Network docker_ragflow    Created                               0.1s 
 ✔ Container ragflow-minio   Started                               0.5s 
 ✔ Container ragflow-es-01   Started                               0.5s 
 ✔ Container ragflow-redis   Started                               0.5s 
 ✔ Container ragflow-mysql   Healthy                               10.9s 
 ✔ Container ragflow-server  Started                               11.3s 
[root@gitlab docker]#
  1. 检查安装情况
[root@gitlab docker]# docker ps -a --format "table {{.ID}}\t{{.Status}}\t{{.Ports}}\t{{.Names}}" | grep ragflow
c446872d8821   Up 33 minutes               0.0.0.0:9380->9380/tcp, :::9380->9380/tcp, 0.0.0.0:7070->80/tcp, :::7070->80/tcp, 0.0.0.0:7443->443/tcp, :::7443->443/tcp   ragflow-server
71f6f1f51d9b   Up 34 minutes (healthy)     33060/tcp, 0.0.0.0:5455->3306/tcp, :::5455->3306/tcp                                                                        ragflow-mysql
51c67d6e2064   Up 34 minutes               0.0.0.0:6379->6379/tcp, :::6379->6379/tcp                                                                                   ragflow-redis
36520244f9d4   Up 34 minutes               0.0.0.0:9030->9000/tcp, :::9030->9000/tcp, 0.0.0.0:9031->9001/tcp, :::9031->9001/tcp                                        ragflow-minio
77d2fda8b476   Up 23 minutes (healthy)     9300/tcp, 0.0.0.0:1200->9200/tcp, :::1200->9200/tcp                                                                         ragflow-es-01
  1. 访问
    • 注意端口有改动
    • http://172.27.150.19:7070/login

  • 自己注册账号登录

  • 主界面

第二节:RAGFlow基于CentOS系统在Docker自定义安装部署_第1张图片

第三节:RAGFlow基于CentOS系统在Docker自定义安装部署

你可能感兴趣的:(centos,docker,ai)