代码提交
This commit is contained in:
1 parent
27e6b0b23e
commit
d7ad0624b7
36 files changed
+2194
-287
No files matched your search
@@ -0,0 +1,172 @@
|
||||
# DeerFlow 后台离线镜像部署简明指南
|
||||
|
||||
本文档只部署后台 Docker 镜像,不包含前端。
|
||||
|
||||
## 1. 部署前准备
|
||||
|
||||
目标服务器需要已安装并启动 Docker:
|
||||
|
||||
```bash
|
||||
docker --version
|
||||
docker info
|
||||
```
|
||||
|
||||
将交付目录 `deerflow-backend` 放到服务器任意位置。以下统一以 `/data/deerflow-backend` 为例:
|
||||
|
||||
```bash
|
||||
DEPLOY_DIR=/data/deerflow-backend
|
||||
cd "$DEPLOY_DIR"
|
||||
chmod +x start-backend-docker.sh
|
||||
```
|
||||
|
||||
如果交付的是压缩包,解压后确保目录中能看到以下文件:
|
||||
|
||||
```text
|
||||
dist/deerflow-backend-offline.tar
|
||||
start-backend-docker.sh
|
||||
config.yaml
|
||||
```
|
||||
|
||||
## 2. 导入镜像并启动
|
||||
|
||||
首次部署执行一次镜像导入:
|
||||
|
||||
```bash
|
||||
cd "$DEPLOY_DIR"
|
||||
docker load -i dist/deerflow-backend-offline.tar
|
||||
```
|
||||
|
||||
启动后台,默认端口为 `8001`:
|
||||
|
||||
```bash
|
||||
./start-backend-docker.sh 8001
|
||||
```
|
||||
|
||||
例如使用 `9001` 端口:
|
||||
|
||||
```bash
|
||||
./start-backend-docker.sh 9001
|
||||
```
|
||||
|
||||
以后重启只需要再次执行同一条启动命令。脚本会自动删除旧容器并创建新容器:
|
||||
|
||||
```bash
|
||||
./start-backend-docker.sh 8001
|
||||
```
|
||||
|
||||
查看运行状态和日志:
|
||||
|
||||
```bash
|
||||
docker ps --filter name=deerflow-backend
|
||||
docker logs -f deerflow-backend
|
||||
```
|
||||
|
||||
健康检查:
|
||||
|
||||
```bash
|
||||
curl http://127.0.0.1:8001/health
|
||||
```
|
||||
|
||||
## 3. 必须知道的文件位置
|
||||
|
||||
首次启动后,实际生效的配置和数据均在 `docker-data` 中。不要只修改部署根目录的模板文件。
|
||||
|
||||
```text
|
||||
$DEPLOY_DIR/docker-data/config/config.yaml # 主配置
|
||||
$DEPLOY_DIR/docker-data/config/.env # 密码、地址等环境变量
|
||||
$DEPLOY_DIR/docker-data/config/extensions_config.json # MCP/扩展配置
|
||||
$DEPLOY_DIR/docker-data/.deer-flow/agents # 智能体及每个 SOUL.md
|
||||
$DEPLOY_DIR/docker-data/skills # 技能目录
|
||||
$DEPLOY_DIR/docker-data/.deer-flow/data # SQLite 数据
|
||||
```
|
||||
|
||||
修改 `config.yaml`、`.env`、智能体或技能后,重新执行启动命令即可生效:
|
||||
|
||||
```bash
|
||||
cd "$DEPLOY_DIR"
|
||||
./start-backend-docker.sh 8001
|
||||
```
|
||||
|
||||
## 4. 配置 MySQL
|
||||
|
||||
本部署支持 MySQL 保存业务数据,同时 SQLite 保留聊天/checkpointer 数据,不使用 PostgreSQL。
|
||||
|
||||
先在 MySQL 中创建数据库:
|
||||
|
||||
```sql
|
||||
CREATE DATABASE deerflow CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
```
|
||||
|
||||
编辑 `$DEPLOY_DIR/docker-data/config/config.yaml`,将数据库部分改为:
|
||||
|
||||
```yaml
|
||||
database:
|
||||
backend: mysql
|
||||
mysql_url: $MYSQL_DATABASE_URL
|
||||
pool_size: 20
|
||||
max_overflow: 20
|
||||
pool_timeout: 30
|
||||
echo_sql: false
|
||||
|
||||
checkpointer:
|
||||
type: sqlite
|
||||
connection_string: .deer-flow/data/deerflow.db
|
||||
```
|
||||
|
||||
再编辑 `$DEPLOY_DIR/docker-data/config/.env`,填写 MySQL 地址:
|
||||
|
||||
```bash
|
||||
MYSQL_DATABASE_URL=mysql+asyncmy://deerflow:数据库密码@192.168.1.10:3306/deerflow?charset=utf8mb4
|
||||
```
|
||||
|
||||
字段说明:
|
||||
|
||||
```text
|
||||
deerflow MySQL 用户名
|
||||
数据库密码 MySQL 密码
|
||||
192.168.1.10 MySQL 服务器地址
|
||||
3306 MySQL 端口
|
||||
deerflow MySQL 数据库名
|
||||
```
|
||||
|
||||
若 MySQL 安装在 Docker 宿主机上,可把地址写为 `host.docker.internal`:
|
||||
|
||||
```bash
|
||||
MYSQL_DATABASE_URL=mysql+asyncmy://deerflow:数据库密码@host.docker.internal:3306/deerflow?charset=utf8mb4
|
||||
```
|
||||
|
||||
密码中有特殊字符时必须进行 URL 编码,例如:`@` 写为 `%40`,`#` 写为 `%23`,`%` 写为 `%25`。
|
||||
|
||||
配置完成后启动:
|
||||
|
||||
```bash
|
||||
cd "$DEPLOY_DIR"
|
||||
./start-backend-docker.sh 8001
|
||||
```
|
||||
|
||||
## 5. 导入智能体和技能
|
||||
|
||||
停止服务后复制文件,复制完成再启动。智能体目录中每个智能体必须同时保留 `config.yaml` 和 `SOUL.md`。
|
||||
|
||||
```bash
|
||||
docker rm -f deerflow-backend
|
||||
|
||||
cp -a /path/to/agents/. "$DEPLOY_DIR/docker-data/.deer-flow/agents/"
|
||||
cp -a /path/to/skills/. "$DEPLOY_DIR/docker-data/skills/"
|
||||
|
||||
cd "$DEPLOY_DIR"
|
||||
./start-backend-docker.sh 8001
|
||||
```
|
||||
|
||||
复制时使用 `源目录/.` 的形式,避免产生 `agents/智能体ID/智能体ID/SOUL.md` 的多一层目录问题。
|
||||
|
||||
## 6. SQLite 聊天数据
|
||||
|
||||
聊天和 checkpointer 的 SQLite 文件位于:
|
||||
|
||||
```text
|
||||
$DEPLOY_DIR/docker-data/.deer-flow/data/deerflow.db
|
||||
```
|
||||
|
||||
替换 SQLite 数据库前必须先停止容器,并同时复制 `deerflow.db`、`deerflow.db-wal`、`deerflow.db-shm`(存在时)。替换后再执行启动命令。
|
||||
|
||||
Reference in new issue
Block a user