打包/部署RAGflow-0.22.2自定义镜像(一)构建ragflow_deps 依赖镜像
打包/部署RAGflow-0.22.2自定义镜像, 第一步 构建ragflow_deps 依赖镜像
背景:修改了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 上)
-
安装 Docker 和 Docker Compose 插件(若已安装可略过):
sudo apt update sudo apt install -y docker.io docker-compose-plugin sudo systemctl enable --now docker -
确认 Docker 版本(官方要求 Docker ≥ 24.0.0,Compose ≥ 2.26.1)ragflow.io
docker version docker compose version
三、构建依赖镜像 infiniflow/ragflow_deps
上传修改后的ragflow项目文件夹
官方文档要求先下载依赖并构建 ragflow_deps 镜像
-
安装
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 是否可用 -
为 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:...
-
在项目根目录执行依赖下载脚本:
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.pydownload_deps.py执行会下载很多依赖,依赖网络环境和操作系统配置,运行到 HuggingFace 下载阶段,可能报错 “TLS 配置不兼容” 等,建议粘贴报错内容,求助 大模型通常很好解决。
tip:在【 ragflow-0.22.0/huggingface.co/InfiniFlow 】在使用【ls -la 】命令,结果发给让大模型,检查目录结构,补齐模型。 可能缺 :InfiniFlow/huqie -
执行成功后,构建依赖镜像:
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
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)