0 安装

解压和安装
docker load -i /path/to/ragflow-offline.tar
# 停止所有服务
docker compose stop

# 重启所有服务
docker compose restart

# 查看所有日志
docker compose logs -f

# 卸载(删除容器+网络,保留数据)
docker compose down

# 卸载并删除数据(谨慎!)
docker compose down -v

1 docker配置文件

decker-compose.yaml

version: '3.8'

services:
  mysql:
    image: mysql:8.0.39
    container_name: ragflow-mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: infini_rag_flow  # root密码(备用)
      MYSQL_DATABASE: rag_flow         # 关键!改为RAGFlow内置的rag_flow
      #MYSQL_USER: root              # 普通用户
      #MYSQL_PASSWORD: ragflow123       # 普通用户密码
      MYSQL_ROOT_HOST: "%"             # 允许root从任意地址访问
    volumes:
      - ./mysql_data:/var/lib/mysql
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql
    ports:
      - "3306:3306"
    command: >
      --default-authentication-plugin=mysql_native_password
      --init-file /docker-entrypoint-initdb.d/init.sql
    healthcheck:
      # 改用root用户做健康检查(匹配RAGFlow的默认用户)
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uragflow", "-pragflow123"]
      interval: 10s
      timeout: 5s
      retries: 5

  valkey:
    image: valkey/valkey:8
    container_name: ragflow-valkey
    restart: always
    ports:
      - "6379:6379"
    command: valkey-server --requirepass ragflow123 --bind 0.0.0.0  # 允许远程访问
    healthcheck:
      test: ["CMD", "valkey-cli", "-a", "ragflow123", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5

  es01:
    image: elasticsearch:8.11.3
    container_name: ragflow-elasticsearch
    restart: always
    environment:
      - ES_JAVA_OPTS=-Xms2g -Xmx2g
      - discovery.type=single-node
      - xpack.security.enabled=false
      - "TZ=Asia/Shanghai"
    ports:
      - "9200:9200"
      - "9300:9300"
    volumes:
      - ./es_data:/usr/share/elasticsearch/data
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9200"]
      interval: 20s
      timeout: 10s
      retries: 5

  minio:
    image: quay.io/minio/minio:RELEASE.2025-06-13T11-33-47Z
    container_name: ragflow-minio
    restart: always
    environment:
      MINIO_ROOT_USER: rag_flow        # 关键!改为RAGFlow内置的rag_flow
      MINIO_ROOT_PASSWORD: ragflow123  # 匹配内置密码
    ports:
      - "9000:9000"
      - "9001:9001"
    volumes:
      - ./minio_data:/data
    command: server /data --console-address ":9001"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 20s
      timeout: 10s
      retries: 5

  ragflow:
    image: infiniflow/ragflow:v0.22.0
    container_name: ragflow-main
    restart: always
    depends_on:
      mysql:
        condition: service_healthy
      valkey:
        condition: service_healthy
      es01:
        condition: service_healthy
      minio:
        condition: service_healthy
    environment:
      # ========== 强制覆盖RAGFlow内置MySQL配置 ==========
      DB_USERNAME: ragflow                # 匹配日志里的root用户
      DB_PASSWORD: ragflow123          # MySQL的root密码
      DB_DATABASE: rag_flow            # 匹配日志里的rag_flow库
      DB_HOST: mysql
      DB_PORT: 3306
      # ========== 覆盖Redis/Valkey配置 ==========
      REDIS_HOST: valkey
      REDIS_PORT: 6379
      REDIS_PASSWORD: ragflow123
      REDIS_DB: 1                      # 匹配日志里的db 1
      # ========== 覆盖ES配置 ==========
      ES_HOSTS: http://elasticsearch:9200
      ES_USERNAME: ""                  # 关闭安全验证
      ES_PASSWORD: ""
      # ========== 覆盖MinIO配置 ==========
      MINIO_USER: rag_flow             # 匹配RAGFlow内置的rag_flow
      MINIO_PASSWORD: ragflow123       # 匹配MinIO的root密码
      # ========== 其他必要配置 ==========
      SERVER_PORT: 8000
      LOG_LEVEL: INFO
      TZ: Asia/Shanghai
      SECRET_KEY: a99bd1e510cc64b35735927f5be1d35e0f579472fe51ce1912bc20d3933ebf17  # 用日志里的key
    ports:
      - "8000:80"
    volumes:
      - ./ragflow_data:/app/data
    privileged: true

networks:
  default:
    name: ragflow-network

init.sql

-- 1. 创建用户(如果不存在)
DROP USER IF EXISTS 'root'@'%';
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'infini_rag_flow';

-- 2. 授权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;
-- 创建rag_flow库(确保存在)
CREATE DATABASE IF NOT EXISTS rag_flow DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

2 nginx配置

替换docker配置文件

sudo docker cp /home/sufu/ragflow/ragflow-0.22.0/docker/nginx/ragflow.conf ragflow-main:/etc/nginx/conf.d/
sudo docker cp /home/sufu/ragflow/ragflow-0.22.0/docker/nginx/nginx.conf ragflow-main:/etc/nginx/
sudo docker cp /home/sufu/ragflow/ragflow-0.22.0/docker/nginx/proxy.conf ragflow-main:/etc/nginx/

docker中的nginx重新加载和重置

如何进入docker的交互态

sudo docker exec -it ragflow-main bash

nginx -t
nginx -s reload

3 快捷脚本

#! /bin/sh
sudo docker logs -f ragflow-main

#! /bin/sh
sudo docker logs -f ragflow-mysql

#! /bin/sh
#sudo docker-compose down
sudo docker-compose up -d

#! /bin/sh
sudo docker ps

#! /bin/sh
sudo docker-compose down
#sudo docker-compose up -d

#! /bin/sh
sudo docker ps

4 运行

http://127.0.0.1:8000/login

码字不易,本博主每篇文章都实测可用。
如果你觉得本篇文章对你有帮助,欢迎打赏,交个朋友。
也欢迎提出宝贵意见。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐