本文档提供 bella-knowledge 项目的完整 Docker 部署方案,包含开发和生产环境的不同部署方式。
重要:bella-knowledge 依赖于 bella-openapi 项目,您需要:
- 首先部署 bella-openapi 项目并确保其正常运行
- 获取 bella-openapi 的访问地址和相关配置信息
- 在部署 bella-knowledge 前,正确配置环境变量中的 bella-openapi 相关设置
bella-knowledge 作为 Bella 体系内的知识管理中心,需要通过 bella-openapi 提供:
- 标准化的 OpenAI File API 兼容接口
- 统一的认证和授权服务
- 跨服务的数据流转能力
docker/
├── docker-compose.yml # 完整应用部署配置
├── docker-compose.middleware.yml # 中间件部署配置
├── docker-compose.enterprise.yml # 企业版完整部署配置(包含 Kafka、S3 等企业特性)
├── .env.example # 环境变量示例
├── README.md # 本部署文档
└── volumes/ # 数据卷目录
├── mysql/data/ # MySQL 数据存储
├── redis/data/ # Redis 数据存储
├── nginx/ # Nginx 配置和日志
└── api/ # API 应用数据
├── logs/ # 应用日志
└── cache/ # 缓存文件
一键启动所有服务,包括中间件、后端API和前端Web,快速体验完整功能:
# 1. 进入 docker 目录
cd docker/
# 2. 复制并配置环境变量
cp .env.example .env
vim .env
# 3. 启动所有服务
docker-compose up -d
# 4. 查看服务状态
docker-compose ps包含服务:
- MySQL 8.0 (数据库)
- Redis 7 (缓存)
- bella-knowledge API (后端服务)
- bella-knowledge Web (前端服务)
- Nginx (反向代理)
使用企业版配置,启动包含 Kafka 消息队列和 S3 对象存储的完整企业级服务:
# 1. 进入 docker 目录
cd docker/
# 2. 复制并配置环境变量
cp .env.example .env
cp .env.enterprise.example .env.enterprise
vim .env
vim .env.enterprise
# 3. 启动企业版服务
docker-compose -f docker-compose.enterprise.yml up -d
# 4. 查看服务状态
docker-compose -f docker-compose.enterprise.yml ps包含服务:
- MySQL 8.0 (数据库)
- Redis 7 (缓存)
- MinIO (S3 兼容对象存储)
- Kafka (消息队列)
- bella-file-api (后端服务,企业版配置)
- bella-file-web (前端服务)
- Nginx (反向代理)
企业版特性:
- S3 对象存储:使用 MinIO 提供 S3 兼容的对象存储服务,支持大文件存储和分布式存储
- Kafka 消息队列:支持异步消息处理、事件驱动架构和微服务间通信
- 企业级配置:包含完整的健康检查、资源限制和生产环境优化配置
- 高可用性支持:服务间依赖管理,确保服务启动顺序和稳定性
仅启动基础中间件,API和前端服务使用源码手动启动,便于开发调试和代码修改:
# 1. 进入 docker 目录
cd docker/
# 2. 启动中间件服务
docker-compose -f docker-compose.middleware.yml up -d
# 3. 启动后端服务(新终端)
cd ../api
mvn spring-boot:run -Dserver.port=8080
# 4. 启动前端服务(新终端)
cd ../web
export NEXT_PUBLIC_BELLA_FILE_API_URL=http://localhost:8080
export NEXT_PUBLIC_BELLA_OPENAPI_URL=http://your-bella-openapi-host:port
npm run dev包含服务:
- MySQL 8.0 (数据库)
- Redis 7 (缓存)
- Nginx (反向代理)
- Java: 8+ (推荐 OpenJDK 11)
- Node.js: 20+ (推荐 20.x LTS)
- Maven: 3.6+
- Git: 2.0+
- Docker: 20+ (用于中间件服务)
后端开发 (IntelliJ IDEA):
1. File -> Open -> 选择 api 目录
2. 配置 JDK: File -> Project Structure -> Project SDK
3. 安装插件: Lombok, Spring Boot前端开发 (VS Code):
# 推荐插件
- ES7+ React/Redux/React-Native snippets
- TypeScript Importer
- Prettier - Code formatter
- ESLint
- Tailwind CSS IntelliSense# 查看应用日志
tail -f volumes/api/logs/app.log
# 数据库连接测试
mysql -h localhost -P 3306 -u root -p
# 健康检查
curl http://localhost:8080/actuator/health# 开发模式启动 (自带热重载)
npm run dev
# 代码检查
npm run lint
npm run type-check
# 构建测试
npm run build| 组件 | 技术 | 版本 | 说明 |
|---|---|---|---|
| 后端 | Java + Spring Boot | 8+ / 2.3+ | REST API 服务 |
| 前端 | React + Next.js | 19+ / 14+ | Web 应用界面 |
| 数据库 | MySQL | 5.7+ | 关系数据库 |
| 缓存 | Redis | 6.0+ | 缓存服务 |
| 构建 | Maven + npm | 3.6+ / 10+ | 构建工具 |
使用 docker-compose.yml 完整部署时:
# 复制环境变量示例文件并根据需要修改
cp .env.example .env
vim .env
# 启动所有服务
docker-compose up -d使用 docker-compose.middleware.yml 仅启动中间件时:
# 启动中间件服务
docker-compose -f docker-compose.middleware.yml up -d
# 设置前后端环境变量并启动
export NEXT_PUBLIC_BELLA_FILE_API_URL=http://localhost:8080
export NEXT_PUBLIC_BELLA_OPENAPI_URL=http://your-bella-openapi-host:port
export server.port=8080前端源码本地启动时需要以下环境变量:
# API服务地址
export NEXT_PUBLIC_BELLA_FILE_API_URL=http://localhost:8080
# bella-openapi服务地址(重要:需要指向实际的bella-openapi部署地址)
export NEXT_PUBLIC_BELLA_OPENAPI_URL=http://your-bella-openapi-host:port
# 启动前端服务
npm run dev后端源码本地启动推荐使用 local profile。该 profile 默认连接:
- MySQL:
127.0.0.1:3306,数据库bella_file_api,用户bella_user/123456 - Redis:
127.0.0.1:6380,密码bella123 - MinIO:
http://127.0.0.1:9000,bucketbella-file-api,账号minioadmin/minioadmin - 本地开发认证:
Authorization: Bearer local-dev
推荐从仓库根目录使用一键脚本启动本地开发环境:
./start-local-dev.sh该脚本会启动或复用 MySQL、Redis、MinIO,并同时启动后端和前端。前端使用 pnpm dev,会实时监听文件变化并自动重编译;如果 dev server 异常退出,脚本会自动重启前端进程。
# 启动后端本地 profile
cd api
SPRING_PROFILES_ACTIVE=local mvn spring-boot:run
# 健康检查
curl http://localhost:18081/actuator/health如需覆盖端口或中间件地址,可以设置环境变量:
SERVER_PORT=8081 \
MYSQL_PORT=3306 \
REDIS_PORT=6379 \
SPRING_PROFILES_ACTIVE=local \
mvn spring-boot:run前端本地联调时启用 dev auth:
cd web
BELLA_DEV_AUTH=true \
BELLA_DEV_AUTH_TOKEN=local-dev \
NEXT_PUBLIC_BELLA_FILE_API_URL=http://localhost:18081 \
NEXT_PUBLIC_BELLA_OPENAPI_URL=https://api.bella.top \
pnpm dev| 服务 | 地址 | 说明 |
|---|---|---|
| 前端Web | http://localhost:3000 | React应用界面 |
| 后端API | http://localhost:8080 | REST API服务 |
| API文档 | http://localhost:8080/swagger-ui.html | Swagger文档 |
| Nginx代理 | http://localhost:80 | 反向代理入口 |
| MySQL | localhost:3306 | 数据库连接 |
| Redis | localhost:6379 | 缓存连接 |
| 服务 | 地址 | 说明 |
|---|---|---|
| 前端Web | http://localhost:3001 | React应用界面 |
| 后端API | http://localhost:8081 | REST API服务 |
| API文档 | http://localhost:8081/swagger-ui.html | Swagger文档 |
| Nginx代理 | http://localhost:80 | 反向代理入口 |
| MySQL | localhost:3306 | 数据库连接 |
| Redis | localhost:6379 | 缓存连接 |
| MinIO API | http://localhost:9000 | S3 兼容API |
| MinIO Console | http://localhost:9001 | MinIO 管理控制台 |
| Kafka | localhost:9092 | Kafka 连接地址 |
| Kafka 外部访问 | localhost:19092 | Kafka 外部连接地址 |
| 服务 | 地址 | 说明 |
|---|---|---|
| 前端Web | http://localhost:3000 | 本地开发服务 |
| 后端API | http://localhost:8080 | 本地开发服务 |
| MySQL | localhost:3306 | Docker中间件 |
| Redis | localhost:6379 | Docker中间件 |
为了优化构建速度,项目支持多种Maven镜像源:
| 镜像源 | 配置值 | 适用场景 | 性能 |
|---|---|---|---|
| 阿里云镜像 | aliyun |
中国大陆地区 | 快速 |
| Maven中央仓库 | central |
海外地区 | 标准 |
在 .env 文件中设置:
# 中国大陆用户推荐
MAVEN_MIRROR=aliyun
# 海外用户推荐
MAVEN_MIRROR=central# 使用阿里云镜像构建
MAVEN_MIRROR=aliyun docker-compose up --build
# 使用中央仓库构建
MAVEN_MIRROR=central docker-compose up --build标准版服务管理:
# 启动服务
docker-compose up -d
# 停止服务
docker-compose down
# 重启服务
docker-compose restart
# 查看服务状态
docker-compose ps
# 查看资源使用
docker-compose top企业版服务管理:
# 启动企业版服务
docker-compose -f docker-compose.enterprise.yml up -d
# 停止企业版服务
docker-compose -f docker-compose.enterprise.yml down
# 重启企业版服务
docker-compose -f docker-compose.enterprise.yml restart
# 查看企业版服务状态
docker-compose -f docker-compose.enterprise.yml ps
# 查看企业版资源使用
docker-compose -f docker-compose.enterprise.yml top# 查看所有服务日志
docker-compose logs -f
# 查看特定服务日志
docker-compose logs -f bella-knowledge-api
# 查看最近100行日志
docker-compose logs --tail 100 bella-knowledge-api# 备份MySQL数据
docker-compose exec mysql mysqldump -u root -p bella_knowledge > backup.sql
# 备份Redis数据
docker-compose exec redis redis-cli --rdb backup.rdb
# 备份应用数据
tar -czf backup-$(date +%Y%m%d).tar.gz volumes/# 查看健康检查状态
docker-compose ps
# 手动健康检查
curl http://localhost:8080/actuator/health-
端口冲突
# 检查端口占用 netstat -tulpn | grep :3306 # 修改 .env 文件中的端口配置 API_PORT=8081 WEB_PORT=3001
-
权限问题
# 设置正确的目录权限 sudo chown -R 1000:1000 volumes/ -
服务启动失败
# 查看详细错误信息 docker-compose logs service-name -
前端无法访问后端API或OpenAPI服务
# 检查环境变量是否正确设置 echo $NEXT_PUBLIC_BELLA_FILE_API_URL echo $NEXT_PUBLIC_BELLA_OPENAPI_URL # 确保后端服务正常运行 curl http://localhost:8080/actuator/health # 确保bella-openapi服务正常运行 curl http://your-bella-openapi-host:port/health
-
bella-openapi连接问题
# 检查bella-openapi服务状态 curl http://your-bella-openapi-host:port/health # 检查网络连通性 ping your-bella-openapi-host # 验证配置是否正确 echo $BELLA_OPENAPI_URL
-
Maven依赖下载慢
# 切换到阿里云镜像源 MAVEN_MIRROR=aliyun docker-compose up --build
-
调整JVM参数
# 在 .env 中调整堆内存 API_MIN_HEAP=2048m API_MAX_HEAP=2048m -
清理Docker缓存
# 清理未使用的镜像和容器 docker system prune -f # 强制重新构建 docker-compose up --build --no-cache
-
修改默认密码
# 在 .env 文件中设置强密码 MYSQL_ROOT_PASSWORD=your-strong-root-password MYSQL_PASSWORD=your-strong-user-password REDIS_PASSWORD=your-strong-redis-password -
SSL配置
# 将SSL证书放到 volumes/nginx/ssl/ 目录 # 配置Nginx HTTPS
-
防火墙设置
# 仅开放必要端口 ufw allow 80 ufw allow 443
所有重要数据都挂载到 volumes/ 目录:
- MySQL数据:
volumes/mysql/data - Redis数据:
volumes/redis/data - 应用日志:
volumes/api/logs - Nginx配置:
volumes/nginx/conf.d
# 拉取最新镜像
docker-compose pull
# 重新构建并启动
docker-compose up -d --build
# 清理旧镜像
docker image prune为确保系统正常运行,请按照以下顺序进行部署:
- 部署 bella-openapi - 部署并启动 bella-openapi 服务
- 验证 bella-openapi - 确保 bella-openapi 服务正常运行并可访问
- 配置环境变量 - 修改 bella-knowledge 环境变量文件中的 bella-openapi 相关配置
- 启动 bella-knowledge - 启动 bella-knowledge 服务
如有问题,请查看:
- 项目主文档
- bella-openapi 项目 - 前置依赖服务
- GitHub Issues
- 应用日志:
volumes/api/logs/ - 服务日志:
docker-compose logs [service-name]