DB-GPT Docker 部署全指南:代理模型与本地 GPU 模型的完整实操手册
【免费下载链接】DB-GPTopen-source agentic AI data assistant for the next generation of AI + Data products.项目地址: https://gitcode.com/GitHub_Trending/db/DB-GPT
本指南基于 DB-GPT 官方部署文档(docs/docs/installation/docker.md)编写,完整覆盖两大主流的 Docker 部署路径:无需 GPU 的代理模型(Proxy Model)部署与面向本地推理的GPU 本地模型部署。读完本文,你将掌握镜像拉取/构建、容器启动、模型挂载、配置文件编写与数据持久化等全套实战技能,并能结合仓库中的 Dockerfile、构建脚本与示例配置理解每个步骤背后的实现原理。
Docker 镜像准备:拉取与本地构建两种方式
DB-GPT 提供两种镜像准备方式,实际使用时可任选其一:
- 从官方镜像仓库拉取预构建镜像(镜像名为
eosphorosai/dbgpt系列); - 基于仓库源码在本地构建,详见 构建 Docker 镜像。
从仓库源码看,官方提供了多套镜像形态:eosphorosai/dbgpt(GPU 完整版,默认命令为dbgpt start webserver --config configs/dbgpt-proxy-siliconflow.toml,见 docker/base/Dockerfile)、eosphorosai/dbgpt-openai(面向代理模型场景的 CPU 镜像)、以及内置 MySQL 的eosphorosai/dbgpt-allinone(见 docker/allinone/Dockerfile)。
本地构建镜像(进阶)
如需定制镜像内容,可使用仓库根目录下的一键构建脚本 docker/base/build_image.sh,它内置了 5 种安装模式:
| 模式 | 基础镜像 | 说明 |
|---|---|---|
default | nvidia/cuda:12.4.0-devel-ubuntu22.04 | CUDA 镜像 + 代理集成 + RAG + 量化支持(默认) |
openai | ubuntu:22.04 | 纯 CPU 镜像,针对 OpenAI 等代理 API 优化,无 GPU 加速 |
vllm | CUDA 基础镜像 | 默认特性 + VLLM 高性能推理 |
llama-cpp | CUDA 基础镜像 | 默认特性 + llama-cpp 推理(自动设置CMAKE_ARGS="-DGGML_CUDA=ON") |
full | CUDA 基础镜像 | 全部特性(含 VLLM、llama-cpp) |
常用构建命令示例:
# 查看全部可用模式 bash docker/base/build_image.sh --list-modes # 默认 CUDA 模式 bash docker/base/build_image.sh # 面向代理 API 的轻量 CPU 镜像 bash docker/base/build_image.sh --install-mode openai # 追加额外组件(如 Milvus 向量库、PostgreSQL 连接器) bash docker/base/build_image.sh --install-mode vllm --add-extras "storage_milvus,datasource_postgres" # 指定镜像名与 Python 版本(最低要求 3.10,默认 3.11) bash docker/base/build_image.sh --image-name mycompany/dbgpt --python-version 3.11构建过程采用多阶段构建:先在 builder 阶段通过uv sync安装全部 Python 依赖,再把虚拟环境复制到最终镜像(存放于/opt/.uv.venv),详见 docker/base/Dockerfile。
方案一:代理模型部署(无需 GPU)
代理模型部署模式下,LLM 推理完全由云端 API(如 SiliconFlow、AI/ML API)完成,不需要 GPU 环境,适合在纯 CPU 服务器上快速体验 DB-GPT 的全部能力。
1. 拉取官方代理镜像
docker pull eosphorosai/dbgpt-openai:latest2. 运行容器
本示例要求你提供有效的 SiliconFlow API Key(在 SiliconFlow 注册并创建 API Key 即可获得),也可以设置AIMLAPI_API_KEY来使用 AI/ML API 服务。
使用 SiliconFlow:
docker run -it --rm -e SILICONFLOW_API_KEY=${SILICONFLOW_API_KEY} \ -p 5670:5670 --name dbgpt eosphorosai/dbgpt-openai或使用 AI/ML API:
docker run -it --rm -e AIMLAPI_API_KEY=${AIMLAPI_API_KEY} \ -p 5670:5670 --name dbgpt eosphorosai/dbgpt-openai请务必将${SILICONFLOW_API_KEY}或${AIMLAPI_API_KEY}替换为你自己的 API Key。命令执行后,浏览器访问 http://localhost:5670 即可进入 Web 界面。
代理模型配置原理解读
容器默认加载的配置文件是configs/dbgpt-proxy-siliconflow.toml(仓库示例),它演示了代理模型场景下的完整模型编排:通过provider = "proxy/siliconflow"接入云端 LLM,同时以 OpenAI 兼容接口(proxy/openai)接入 embedding 模型,并配置了独立的 reranker 模型:
[models] [[models.llms]] name = "Qwen/Qwen2.5-Coder-32B-Instruct" provider = "proxy/siliconflow" api_key = "${env:SILICONFLOW_API_KEY}" [[models.embeddings]] name = "BAAI/bge-large-zh-v1.5" provider = "proxy/openai" api_url = "https://api.siliconflow.cn/v1/embeddings" api_key = "${env:SILICONFLOW_API_KEY}" [[models.rerankers]] name = "BAAI/bge-reranker-v2-m3" provider = "proxy/siliconflow" api_key = "${env:SILICONFLOW_API_KEY}"关键点说明:
${env:SILICONFLOW_API_KEY}:配置支持从环境变量读取密钥,这正是上文docker run -e传入变量的落地位置,避免把密钥写死在配置文件里;- Web 服务监听:默认
host = "0.0.0.0"、port = 5670,与-p 5670:5670端口映射对应; - 数据落盘:默认使用 SQLite(
pilot/meta_data/dbgpt.db)+ Chroma 向量库(pilot/data),无需额外数据库即可运行。
方案二:本地 GPU 模型部署(Local Model)
该部署方式需要GPU 环境,模型权重从本地文件系统加载,而非从 Hugging Face 或 ModelScope 在线下载。当你已经将模型下载到本地机器,或希望使用其他来源的模型时,这种方式尤其适用。
前置条件:安装 NVIDIA Container Toolkit
运行容器前,需要先安装 NVIDIA Container Toolkit(参照 NVIDIA 官方安装指南),否则--gpus all参数无法生效。
Step 1:下载模型
在运行容器前,先把模型下载到本地机器。国内用户推荐使用 ModelScope,也可使用 Hugging Face。
以Qwen2.5-Coder-0.5B-Instruct(代码生成 LLM)和bge-large-zh-v1.5(中文 embedding 模型)为例:
方式 A:从 ModelScope 下载
# 1. 安装 git 与 git-lfs(如尚未安装) sudo apt-get install git git-lfs # 2. 在当前工作目录创建 models 目录 mkdir -p ./models # 3. 克隆模型仓库到 models 目录 cd ./models git lfs install git clone https://www.modelscope.cn/Qwen/Qwen2.5-Coder-0.5B-Instruct.git git clone https://www.modelscope.cn/BAAI/bge-large-zh-v1.5.git cd ..方式 B:从 Hugging Face 下载
sudo apt-get install git git-lfs mkdir -p ./models cd ./models git lfs install git clone https://huggingface.co/Qwen/Qwen2.5-Coder-0.5B-Instruct git clone https://huggingface.co/BAAI/bge-large-zh-v1.5 cd ..下载完成后,模型分别位于./models/Qwen2.5-Coder-0.5B-Instruct与./models/bge-large-zh-v1.5目录。
Step 2:编写配置文件
创建名为dbgpt-local-gpu.toml的配置文件,内容如下:
[models] [[models.llms]] name = "Qwen2.5-Coder-0.5B-Instruct" provider = "hf" # Specify the model path in the local file system path = "/app/models/Qwen2.5-Coder-0.5B-Instruct" [[models.embeddings]] name = "BAAI/bge-large-zh-v1.5" provider = "hf" # Specify the model path in the local file system path = "/app/models/bge-large-zh-v1.5"注意:这里的path指向的是容器内部的路径,/app/models是稍后通过-v挂载进来的宿主机./models目录。provider = "hf"表示通过 Hugging Face Transformers 框架从本地路径加载模型。仓库中的 configs/dbgpt-local-vllm.toml 提供了同类本地模型的另一种写法(使用vllm作为 provider),可对照参考。
Step 3:运行容器
将本地models目录与配置文件挂载进容器:
docker run --ipc host --gpus all \ -it --rm \ -p 5670:5670 \ -v ./dbgpt-local-gpu.toml:/app/configs/dbgpt-local-gpu.toml \ -v ./models:/app/models \ --name dbgpt \ eosphorosai/dbgpt \ dbgpt start webserver --config /app/configs/dbgpt-local-gpu.toml命令逐项说明:
--ipc host:启用宿主机 IPC 模式,提升共享内存访问性能(对 PyTorch 多进程 DataLoader 等场景尤为重要);--gpus all:允许容器使用宿主机全部可用 GPU;-v ./dbgpt-local-gpu.toml:/app/configs/dbgpt-local-gpu.toml:把本地配置文件挂载进容器(覆盖镜像内同名文件);-v ./models:/app/models:把本地模型目录挂载进容器,与配置中的/app/models/...路径对应;eosphorosai/dbgpt:GPU 版镜像;dbgpt start webserver --config /app/configs/dbgpt-local-gpu.toml:显式指定配置文件启动 Web 服务。该命令的默认形态就是镜像的CMD(见 docker/base/Dockerfile),此处通过命令行参数覆盖。
Step 4:访问应用
容器运行后,在浏览器访问 http://localhost:5670 即可使用应用。
Step 5:持久化数据(可选)
容器停止或删除后,默认情况下容器内数据会丢失。可以通过将pilot/data与pilot/message目录映射到宿主机来持久化应用数据与消息记录。
- 创建本地持久化目录:
mkdir -p ./pilot/data mkdir -p ./pilot/message mkdir -p ./pilot/alembic_versions- 修改
dbgpt-local-gpu.toml,将数据库路径指向挂载目录:
[service.web.database] type = "sqlite" path = "/app/pilot/message/dbgpt.db"- 在原有命令基础上追加数据卷挂载:
docker run --ipc host --gpus all \ -it --rm \ -p 5670:5670 \ -v ./dbgpt-local-gpu.toml:/app/configs/dbgpt-local-gpu.toml \ -v ./models:/app/models \ -v ./pilot/data:/app/pilot/data \ -v ./pilot/message:/app/pilot/message \ -v ./pilot/alembic_versions:/app/pilot/meta_data/alembic/versions \ --name dbgpt \ eosphorosai/dbgpt \ dbgpt start webserver --config /app/configs/dbgpt-local-gpu.toml这样pilot/data(向量库等数据)与pilot/message(应用消息与 SQLite 数据库)都会持久化在宿主机上;alembic_versions目录用于保存数据库迁移脚本版本,确保后续升级时 schema 迁移可追溯。
完成后的目录结构
完成上述步骤后,你的目录结构应如下所示:
. ├── dbgpt-local-gpu.toml ├── models │ ├── Qwen2.5-Coder-0.5B-Instruct │ └── bge-large-zh-v1.5 ├── pilot │ ├── data │ └── message该结构保证了模型与业务数据都保存在宿主机本地,并通过挂载方式进入容器,容器重建后依然可用、不丢数据。
补充方案:Docker Compose 一键编排
如果觉得逐条docker run参数繁琐,仓库根目录还提供了完整的 docker-compose.yml 编排文件,它同时拉起 MySQL 数据库与 webserver 两个容器,同样基于 SiliconFlow 代理模型(也可改用AIMLAPI_API_KEY):
SILICONFLOW_API_KEY=${SILICONFLOW_API_KEY} docker compose up -d启动成功后可以看到两个容器就绪:
[+] Running 3/3 ✔ Network dbgptnet Created 0.0s ✔ Container db-gpt-db-1 Started 0.2s ✔ Container db-gpt-webserver-1 Started 0.2s查看日志:
docker logs db-gpt-webserver-1 -f从 docker-compose.yml 可以看到两个关键设计:
- webserver 使用代理镜像
eosphorosai/dbgpt-openai:latest,命令为dbgpt start webserver --config /app/configs/dbgpt-proxy-siliconflow-mysql.toml,通过环境变量把SILICONFLOW_API_KEY与 MySQL 连接信息注入配置; - 数据库由 MySQL 容器承载:
docker-entrypoint-initdb.d目录会初始化 assets/schema/dbgpt.sql 与示例 SQL,webserver 通过depends_on等待数据库就绪(并配置了restart: unless-stopped兜底重启)。
部署方式速查与选型建议
| 场景 | 镜像 | GPU | 模型来源 | 关键参数 |
|---|---|---|---|---|
| 快速体验、纯 CPU 服务器 | eosphorosai/dbgpt-openai | 不需要 | 云端 API | SILICONFLOW_API_KEY或AIMLAPI_API_KEY |
| 本地私有化推理 | eosphorosai/dbgpt | 需要(--gpus all) | 本地文件(-v ./models:/app/models) | 自定义dbgpt-local-gpu.toml |
| 数据库编排一体化 | compose 服务webserver+db | 不需要 | 云端 API + MySQL | .env中传入 API Key |
几点选型与运维建议:
- 端口:三种方案均统一暴露
5670,对应配置中的[service.web] port = 5670; - 密钥管理:优先通过
-e或环境变量注入,避免写入配置仓库; - 数据安全:生产环境务必按 Step 5 持久化
pilot/data、pilot/message与alembic_versions三个目录; - 构建定制:需要集成 Milvus/Elasticsearch 等组件时,使用 docker/base/build_image.sh 的
--add-extras参数重新构建镜像,避免运行时出现组件缺失。
按照本文两条主线任选其一,你即可在 Docker 环境中完成 DB-GPT 的部署并进入 Web 界面使用;进一步了解镜像构建的更多定制选项,可继续阅读 构建 Docker 镜像。
【免费下载链接】DB-GPTopen-source agentic AI data assistant for the next generation of AI + Data products.项目地址: https://gitcode.com/GitHub_Trending/db/DB-GPT
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考