背景:修改了agflow-0.22.0\web\src\pages\next-chats\下页面中的前端布局代码,进行项目打包
 

一、官方 Dockerfile 的构建逻辑

官方 Dockerfile 是三阶段构建(base / builder / production),关键部分如下:GitHub

  • builder 阶段

    • COPY web web

    • RUN cd web && npm install && npm run build

    • 这里会根据你当前 web/src/... 源码,构建出新的 web/dist

  • production 阶段

    • 再次 COPY web web(源码)

    • COPY --from=builder /ragflow/web/dist /ragflow/web/dist (把刚才编译好的前端产物复制进最终镜像)

二、准备工作(在 Ubuntu 22.04.5 上)

  1. 安装 Docker 和 Docker Compose 插件(若已安装可略过):

    sudo apt update 
    sudo apt install -y docker.io docker-compose-plugin 
    sudo systemctl enable --now docker

  2. 确认 Docker 版本(官方要求 Docker ≥ 24.0.0,Compose ≥ 2.26.1)ragflow.io

    docker version
    docker compose version
    

三、构建依赖镜像 infiniflow/ragflow_deps

上传修改后的ragflow项目文件夹

官方文档要求先下载依赖并构建 ragflow_deps 镜像

  1. 安装 uv(用于执行 download_deps.py):

    sudo apt install -y python3-pip pipx 
    pipx install uv # 或者:pip install uv
    
    pipx ensurepath   #把 pipx 的 bin 目录加入 PATH
    
    source ~/.bashrc  #重新加载 shell 环境
    
    uv --version   验证 uv 是否可用
    
  2. 为 RagFlow 创建一个虚拟环境

    uv venv .ragflow_venv    # 在项目根目录执行.../ragflow-0.22.0
                             #创建完成后,你会看到目录:/workspace/ragflow-0.22.0/.ragflow_venv
    
    source .ragflow_venv/bin/activate  #激活虚拟环境
    

    激活后提示符会变成:  (.ragflow_venv) root@serverycjc:...

  3. 在项目根目录执行依赖下载脚本:

    cd /workspace/ragflow-0.22.0
    
            # uv tool install 一次只能安装 1 个包
    uv tool install huggingface_hub
    uv tool install requests
    uv tool install tqdm
    uv tool install pyyaml
    uv tool install nltk
    uv tool install transformers
    uv tool install safetensors
    uv tool install sentencepiece
    
    #RagFlow的download_deps.py 使用依赖 huggingface_hub、requests 等模块,上方已提前安装
    
    python3 download_deps.py   #运行ragflow原生依赖下载脚本
    
    

    可能会报错:
    Downloading libssl1.1_1.1.1f-1ubuntu2_arm64.deb     urllib.error.HTTPError: HTTP Error 502: Bad Gateway
    Ubuntu 官方镜像源中 libssl1.1 已彻底删除,编辑 ragflow-0.22.0/download_deps.py,找到类似以下内容:  进行注释!

    libssl_urls = {
        "amd64": "http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb",
        "arm64": "http://ports.ubuntu.com/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_arm64.deb"
    }
    
    for arch, url in libssl_urls.items():
        filename = f"libssl1.1_{arch}.deb"
        print(f"Downloading {filename} from {url}...")
        urllib.request.urlretrieve(url, filename)
    

      进行注释后!再次运行脚本

    source .ragflow_venv/bin/activate
    python3 download_deps.py
    

    download_deps.py执行会下载很多依赖,依赖网络环境和操作系统配置,运行到 HuggingFace 下载阶段,可能报错 “TLS 配置不兼容” 等,建议粘贴报错内容,求助 大模型通常很好解决。
    tip:在【 ragflow-0.22.0/huggingface.co/InfiniFlow 】在使用【ls -la 】命令,结果发给让大模型,检查目录结构,补齐模型。  可能缺 :InfiniFlow/huqie

  4. 执行成功后,构建依赖镜像:

    docker build -f Dockerfile.deps -t infiniflow/ragflow_deps .
    

    构建ragflow_deps 依赖镜像,通常只需做一次;以后你修改前端代码、重建主镜像时,无需重复。
    构建镜像中报错,可能比较多如出现:
    COPY ... libssl1.1_1.1.1f-1ubuntu2_amd64.deb libssl1.1_1.1.1f-1ubuntu2_arm64.deb ... failed: "/libssl1.1_1.1.1f-1ubuntu2_arm64.deb": not found

    # 修改 Dockerfile.deps,删除 libssl*.deb 相关 COPY

    找到以下行(报错日志会 提升第 x 行))

    COPY chromedriver-linux64-121-0-6167-85 chrome-linux64-121-0-6167-85 cl100k_base.tiktoken libssl1.1_1.1.1f-1ubuntu2_amd64.deb libssl1.1_1.1.1f-1ubuntu2_arm64.deb tika-server-standard-3.0.0.jar tika-server-standard-3.0.0.jar.md5 libssl*.deb /
    

    替换为:

    COPY chromedriver-linux64-121-0-6167-85 \
         chrome-linux64-121-0-6167-85 \
         cl100k_base.tiktoken \
         tika-server-standard-3.0.0.jar \
         tika-server-standard-3.0.0.jar.md5 \
         /
    

    解决问题后,重新执行:

    cd /workspace/ragflow-0.22.0
    docker build -f Dockerfile.deps -t infiniflow/ragflow_deps .
    

    这里附上我最终通过的 Dockerfile.deps 文件  可以借鉴

    # This builds an image that contains the resources needed by Dockerfile
    FROM scratch
    
    # -----------------------------------------------------------------------------
    # Copy resources downloaded via download_deps.py
    # NOTE:
    #   libssl1.1 packages were removed from Ubuntu repo and are not used by RagFlow.
    #   Therefore COPY entries referencing libssl*.deb have been removed.
    # -----------------------------------------------------------------------------
    
    COPY \
        chromedriver-linux64-121-0-6167-85 \
        chrome-linux64-121-0-6167-85 \
        cl100k_base.tiktoken \
        tika-server-standard-3.0.0.jar \
        tika-server-standard-3.0.0.jar.md5 \
        /
    
    # NLTK data
    COPY nltk_data /nltk_data
    
    # HuggingFace models (InfiniFlow/text_concat_xgb_v1.0, InfiniFlow/deepdoc, InfiniFlow/huqie)
    COPY huggingface.co /huggingface.co
    
Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐