96 lines
3.8 KiB
Markdown
96 lines
3.8 KiB
Markdown
# AINoval 一键部署(Docker 版)
|
||
|
||
本指南面向开源用户,提供无需自行构建前端与后端的简易部署方案:一个镜像同时打包后端 JAR 与已编译的 Web 静态文件,配合 docker-compose 可一键启动,并内置可选的 MongoDB 服务。
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
deploy/
|
||
├─ dist/
|
||
│ ├─ ainoval-server.jar # 预编译后端
|
||
│ └─ web/ # 预编译前端静态文件
|
||
├─ open/
|
||
│ ├─ README.md # 本指南
|
||
│ ├─ Dockerfile # 开源镜像 Dockerfile(相对路径复制 dist)
|
||
│ ├─ docker-compose.yml # 开源 docker-compose(相对路径引用本目录 env)
|
||
│ ├─ production.env.example # 环境变量示例
|
||
│ └─ production.env # 实际运行环境变量(建议忽略到版本库外)
|
||
```
|
||
|
||
## 系统要求
|
||
- Docker 24+,Docker Compose v2+
|
||
- 至少 1GB 可用内存(建议 2GB+),磁盘 2GB+
|
||
|
||
## 快速开始
|
||
1) 准备环境变量
|
||
- 复制 `deploy/open/production.env.example` 到 `deploy/open/production.env`
|
||
- 根据你的实际情况修改变量(尤其是 Mongo、JWT、对象存储、代理、API Key 等)
|
||
|
||
2) 构建镜像(或使用你私有仓库已推送的镜像)
|
||
```bash
|
||
# 方式A:在仓库根目录执行
|
||
docker compose -f deploy/open/docker-compose.yml build
|
||
|
||
# 方式B:在 deploy/open 目录执行(无需重复路径)
|
||
cd deploy/open
|
||
docker compose -f docker-compose.yml build
|
||
# 或
|
||
docker compose build
|
||
```
|
||
|
||
3) 启动服务
|
||
```bash
|
||
# 仓库根目录
|
||
docker compose -f deploy/open/docker-compose.yml up -d
|
||
|
||
# 或在 deploy/open 目录
|
||
docker compose -f docker-compose.yml up -d
|
||
# 或
|
||
docker compose up -d
|
||
```
|
||
启动后访问:http://localhost:18080/
|
||
|
||
## MongoDB 说明
|
||
- 默认 compose 已包含 `mongo` 服务(镜像:mongo:6.0),开源一键部署默认使用 dev 模式、无认证。
|
||
- 如你已有外部 MongoDB,可:
|
||
- 注释/删除 `docker-compose.yml` 中的 `mongo` 服务;
|
||
- 在 `deploy/open/production.env` 设置 `SPRING_DATA_MONGODB_URI` 指向外部实例(例如:`mongodb://host:27017/ainovel`)。
|
||
|
||
## 重要环境变量(节选)
|
||
- 端口与 JVM:`SERVER_PORT`、`JVM_XMS`、`JVM_XMX`
|
||
- Mongo(dev 无认证):`SPRING_DATA_MONGODB_URI`(默认 `mongodb://mongo:27017/ainovel`)
|
||
- 向量库(Chroma):默认关闭,`VECTORSTORE_CHROMA_ENABLED=false`
|
||
- 开启:将其设为 `true` 并确保 `CHROMA_URL` 可达(如 `http://host.docker.internal:18000` 或独立容器地址)。
|
||
- JWT:`JWT_SECRET`(务必改成强随机值)
|
||
- 存储:`STORAGE_PROVIDER`(local/alioss…),以及对应供应商参数
|
||
- 代理:`PROXY_ENABLED`、`PROXY_HOST`、`PROXY_PORT`
|
||
- 向量库:`CHROMA_URL`(如需)
|
||
- AI Key:`OPENAI_API_KEY`、`GEMINI_API_KEY`、`ANTHROPIC_API_KEY` 等
|
||
|
||
> 注意:示例 env 仅用于演示,生产环境请务必替换为你自己的安全值。
|
||
|
||
## 日志与数据
|
||
- 应用日志挂载在 `deploy/open/logs`(compose 中映射到容器 `/var/log/ainoval`)。
|
||
- MongoDB 数据保存在命名卷 `mongo-data` 中。
|
||
|
||
## 常见操作
|
||
- 查看日志:
|
||
```bash
|
||
docker compose -f deploy/open/docker-compose.yml logs -f ainoval
|
||
```
|
||
- 重启服务:
|
||
```bash
|
||
docker compose -f deploy/open/docker-compose.yml restart ainoval
|
||
```
|
||
- 停止并删除容器:
|
||
```bash
|
||
docker compose -f deploy/open/docker-compose.yml down
|
||
```
|
||
|
||
## 常见问题
|
||
- 无法访问页面:检查容器是否正常启动、端口是否被占用;或修改 `ports` 映射。
|
||
- 连接 Mongo 失败:检查 `MONGO_*` 变量,或确认外部 Mongo 地址/鉴权。
|
||
- 前端静态资源 404:镜像内置静态目录 `/app/web/`,通过 JVM 参数 `-Dspring.web.resources.static-locations` 暴露;确保 `deploy/dist/web/` 在构建前已准备完整。
|
||
|
||
如有改进建议或问题反馈,欢迎提交 Issue!
|