第二节:RAGFlow基于CentOS系统在Docker自定义安装部署
一、说明
- 网上很多都是直接部署, 镜像太大, 很慢, 以下是基于Linux, 下载镜像, 上传自己的仓库, 并做挂载数据归一化部署
- 老样子, 无废话, 直接开干
- 服务器环境要求
- 基于《第一节:DeepSeek基于CentOS虚拟机部署》进行操作
CPU >= 4 cores
RAM >= 16 GB
Disk >= 50 GB
Docker >= 24.0.0 & Docker Compose >= v2.26.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 稳定发布版本, 且包含嵌入模型, 大家根据自己情况安装
二、自定义安装前准备
- 服务创建文件夹
[root@gitlab software]# mkdir -p /home/troila/software/ragflow
- 下载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
- 下载后解压
[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
- 进入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镜像官网请忽略, 镜像较大建议大家先下载在部署, 不然过程很慢)
- 镜像准备
- 从.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]#
- 镜像处理
- 上面两个文件过滤出了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
- 替换镜像地址
- 更改.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]#
- 创建容器挂载卷(非必要, 个人有洁癖, 数据乱放, 感觉很别扭)
- 目的是挂载数据统一目录管理
- 后期删除方便
## 绝对路径
[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
- 放开挂载文件操作权限
- 确保所有创建的文件夹都有读写权限
[root@gitlab ragflow]# chmod 777 data/**/*
- 复制挂载必要数据、配置, ,到上述创建的文件对应目录下
## 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]#
- 更改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
- 更改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]#
- 开始安装
- 我这离端口号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]#
- 检查安装情况
[root@gitlab docker]# docker ps -a --format "table {{.ID}} {{.Status}} {{.Ports}} {{.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
- 访问
- 注意端口有改动
- http://172.27.150.19:7070/login
- 自己注册账号登录
- 主界面
第三节:RAGFlow基于CentOS系统在Docker自定义安装部署