|
@@ -0,0 +1,302 @@
|
|
|
|
|
+# MIXAPI Docker 镜像使用说明
|
|
|
|
|
+
|
|
|
|
|
+## 镜像地址
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+registry.cn-chengdu.aliyuncs.com/apq/mixapi:latest
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+## 快速开始
|
|
|
|
|
+
|
|
|
|
|
+### 1. 测试运行
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 创建工作目录
|
|
|
|
|
+mkdir -p ~/mixapi && cd ~/mixapi
|
|
|
|
|
+
|
|
|
|
|
+# 测试运行(退出后自动删除容器)
|
|
|
|
|
+docker run -it --rm \
|
|
|
|
|
+ -p 3000:3000 \
|
|
|
|
|
+ -v $(pwd):/data \
|
|
|
|
|
+ registry.cn-chengdu.aliyuncs.com/apq/mixapi:latest
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 2. 正式部署
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 创建工作目录
|
|
|
|
|
+mkdir -p ~/mixapi && cd ~/mixapi
|
|
|
|
|
+
|
|
|
|
|
+# 后台运行
|
|
|
|
|
+docker run -d \
|
|
|
|
|
+ --name mixapi \
|
|
|
|
|
+ --restart always \
|
|
|
|
|
+ -p 3000:3000 \
|
|
|
|
|
+ -v $(pwd):/data \
|
|
|
|
|
+ -e TZ=Asia/Shanghai \
|
|
|
|
|
+ registry.cn-chengdu.aliyuncs.com/apq/mixapi:latest
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 3. 使用 Docker Compose
|
|
|
|
|
+
|
|
|
|
|
+创建 `docker-compose.yml` 文件:
|
|
|
|
|
+
|
|
|
|
|
+```yaml
|
|
|
|
|
+version: '3.8'
|
|
|
|
|
+
|
|
|
|
|
+services:
|
|
|
|
|
+ mixapi:
|
|
|
|
|
+ image: registry.cn-chengdu.aliyuncs.com/apq/mixapi:latest
|
|
|
|
|
+ container_name: mixapi
|
|
|
|
|
+ restart: always
|
|
|
|
|
+ ports:
|
|
|
|
|
+ - "3000:3000"
|
|
|
|
|
+ volumes:
|
|
|
|
|
+ - ./data:/data
|
|
|
|
|
+ environment:
|
|
|
|
|
+ - TZ=Asia/Shanghai
|
|
|
|
|
+ # 可选:自定义 GitHub 代理(用于自动更新)
|
|
|
|
|
+ # - GITHUB_PROXY=https://gh.llkk.cc
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+启动:
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+docker-compose up -d
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+## 访问服务
|
|
|
|
|
+
|
|
|
|
|
+启动后通过浏览器访问:
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+http://localhost:3000
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+或者使用服务器 IP:
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+http://你的服务器IP:3000
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+## 默认账号
|
|
|
|
|
+
|
|
|
|
|
+首次启动时,系统会自动创建管理员账号:
|
|
|
|
|
+
|
|
|
|
|
+- **用户名**: `root`
|
|
|
|
|
+- **密码**: `123456`
|
|
|
|
|
+
|
|
|
|
|
+> ⚠️ 请登录后立即修改默认密码!
|
|
|
|
|
+
|
|
|
|
|
+## 配置说明
|
|
|
|
|
+
|
|
|
|
|
+### 环境变量
|
|
|
|
|
+
|
|
|
|
|
+| 变量名 | 说明 | 默认值 |
|
|
|
|
|
+|--------|------|--------|
|
|
|
|
|
+| `TZ` | 时区 | `UTC` |
|
|
|
|
|
+| `PORT` | 服务端口 | `3000` |
|
|
|
|
|
+| `GITHUB_PROXY` | GitHub 代理地址(用于自动更新) | `https://gh.llkk.cc` |
|
|
|
|
|
+| `SQL_DSN` | MySQL 数据库连接字符串 | 无(使用 SQLite) |
|
|
|
|
|
+| `REDIS_CONN_STRING` | Redis 连接字符串 | 无 |
|
|
|
|
|
+| `MEMORY_CACHE_ENABLED` | 启用内存缓存 | `false` |
|
|
|
|
|
+| `SESSION_SECRET` | 会话密钥 | 随机生成 |
|
|
|
|
|
+
|
|
|
|
|
+### 数据持久化
|
|
|
|
|
+
|
|
|
|
|
+容器内的 `/data` 目录用于存储:
|
|
|
|
|
+- SQLite 数据库文件
|
|
|
|
|
+- 配置文件
|
|
|
|
|
+- 日志文件
|
|
|
|
|
+
|
|
|
|
|
+**务必挂载此目录以防止数据丢失!**
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+-v /your/data/path:/data
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 使用 MySQL 数据库
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+docker run -d \
|
|
|
|
|
+ --name mixapi \
|
|
|
|
|
+ --restart always \
|
|
|
|
|
+ -p 3000:3000 \
|
|
|
|
|
+ -v $(pwd):/data \
|
|
|
|
|
+ -e TZ=Asia/Shanghai \
|
|
|
|
|
+ -e SQL_DSN="user:password@tcp(mysql-host:3306)/mixapi?parseTime=true" \
|
|
|
|
|
+ registry.cn-chengdu.aliyuncs.com/apq/mixapi:latest
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 使用 Redis 缓存
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+docker run -d \
|
|
|
|
|
+ --name mixapi \
|
|
|
|
|
+ --restart always \
|
|
|
|
|
+ -p 3000:3000 \
|
|
|
|
|
+ -v $(pwd):/data \
|
|
|
|
|
+ -e TZ=Asia/Shanghai \
|
|
|
|
|
+ -e REDIS_CONN_STRING="redis://redis-host:6379/0" \
|
|
|
|
|
+ registry.cn-chengdu.aliyuncs.com/apq/mixapi:latest
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 完整配置示例
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+docker run -d \
|
|
|
|
|
+ --name mixapi \
|
|
|
|
|
+ --restart always \
|
|
|
|
|
+ -p 3000:3000 \
|
|
|
|
|
+ -v $(pwd):/data \
|
|
|
|
|
+ -e TZ=Asia/Shanghai \
|
|
|
|
|
+ -e SQL_DSN="user:password@tcp(mysql-host:3306)/mixapi?parseTime=true" \
|
|
|
|
|
+ -e REDIS_CONN_STRING="redis://redis-host:6379/0" \
|
|
|
|
|
+ -e MEMORY_CACHE_ENABLED=true \
|
|
|
|
|
+ -e SESSION_SECRET="your-secret-key" \
|
|
|
|
|
+ registry.cn-chengdu.aliyuncs.com/apq/mixapi:latest
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+## API 接口
|
|
|
|
|
+
|
|
|
|
|
+| 接口类型 | 地址 |
|
|
|
|
|
+|----------|------|
|
|
|
|
|
+| OpenAI Chat | `http://你的服务器:3000/v1/chat/completions` |
|
|
|
|
|
+| Anthropic Chat | `http://你的服务器:3000/v1/messages` |
|
|
|
|
|
+| Gemini Chat | `http://你的服务器:3000/v1beta` |
|
|
|
|
|
+| Embeddings | `http://你的服务器:3000/v1/embeddings` |
|
|
|
|
|
+
|
|
|
|
|
+### 调用示例
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+curl http://localhost:3000/v1/chat/completions \
|
|
|
|
|
+ -H "Content-Type: application/json" \
|
|
|
|
|
+ -H "Authorization: Bearer YOUR_API_KEY" \
|
|
|
|
|
+ -d '{
|
|
|
|
|
+ "model": "gpt-3.5-turbo",
|
|
|
|
|
+ "messages": [{"role": "user", "content": "Hello!"}]
|
|
|
|
|
+ }'
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+## 常用命令
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 查看日志
|
|
|
|
|
+docker logs -f mixapi
|
|
|
|
|
+
|
|
|
|
|
+# 查看实时日志(最后100行)
|
|
|
|
|
+docker logs -f --tail 100 mixapi
|
|
|
|
|
+
|
|
|
|
|
+# 重启容器
|
|
|
|
|
+docker restart mixapi
|
|
|
|
|
+
|
|
|
|
|
+# 停止容器
|
|
|
|
|
+docker stop mixapi
|
|
|
|
|
+
|
|
|
|
|
+# 启动容器
|
|
|
|
|
+docker start mixapi
|
|
|
|
|
+
|
|
|
|
|
+# 删除容器
|
|
|
|
|
+docker rm mixapi
|
|
|
|
|
+
|
|
|
|
|
+# 进入容器
|
|
|
|
|
+docker exec -it mixapi sh
|
|
|
|
|
+
|
|
|
|
|
+# 查看容器状态
|
|
|
|
|
+docker ps -a | grep mixapi
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+## 更新镜像
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 拉取最新镜像
|
|
|
|
|
+docker pull registry.cn-chengdu.aliyuncs.com/apq/mixapi:latest
|
|
|
|
|
+
|
|
|
|
|
+# 停止并删除旧容器
|
|
|
|
|
+docker stop mixapi && docker rm mixapi
|
|
|
|
|
+
|
|
|
|
|
+# 重新运行(使用之前的 docker run 命令)
|
|
|
|
|
+docker run -d \
|
|
|
|
|
+ --name mixapi \
|
|
|
|
|
+ --restart always \
|
|
|
|
|
+ -p 3000:3000 \
|
|
|
|
|
+ -v $(pwd):/data \
|
|
|
|
|
+ -e TZ=Asia/Shanghai \
|
|
|
|
|
+ registry.cn-chengdu.aliyuncs.com/apq/mixapi:latest
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+## 自动更新
|
|
|
|
|
+
|
|
|
|
|
+镜像内置自动更新功能:
|
|
|
|
|
+- 每天自动检测 GitHub 上的最新版本
|
|
|
|
|
+- 发现新版本时自动下载并热更新
|
|
|
|
|
+- 更新日志位于容器内 `/app/update.log`
|
|
|
|
|
+
|
|
|
|
|
+查看更新日志:
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+docker exec mixapi cat /app/update.log
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+如需禁用自动更新,可以在启动时覆盖 CMD:
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+docker run -d \
|
|
|
|
|
+ --name mixapi \
|
|
|
|
|
+ -p 3000:3000 \
|
|
|
|
|
+ -v $(pwd):/data \
|
|
|
|
|
+ registry.cn-chengdu.aliyuncs.com/apq/mixapi:latest \
|
|
|
|
|
+ /app/mixapi
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+## 故障排查
|
|
|
|
|
+
|
|
|
|
|
+### 1. 容器无法启动
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 查看容器日志
|
|
|
|
|
+docker logs mixapi
|
|
|
|
|
+
|
|
|
|
|
+# 检查端口占用
|
|
|
|
|
+netstat -tlnp | grep 3000
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 2. 无法访问 Web 界面
|
|
|
|
|
+
|
|
|
|
|
+- 检查防火墙是否开放 3000 端口
|
|
|
|
|
+- 检查容器是否正常运行:`docker ps`
|
|
|
|
|
+- 检查端口映射是否正确
|
|
|
|
|
+
|
|
|
|
|
+### 3. 数据丢失
|
|
|
|
|
+
|
|
|
|
|
+确保正确挂载了数据目录:
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+-v /your/data/path:/data
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 4. 自动更新失败
|
|
|
|
|
+
|
|
|
|
|
+检查 GitHub 代理是否可用:
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+docker exec mixapi wget -qO- --timeout=5 "https://gh.llkk.cc/https://api.github.com/repos/aiprodcoder/MIXAPI/releases/latest"
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+如果代理不可用,可以更换代理:
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+docker run -d \
|
|
|
|
|
+ -e GITHUB_PROXY=https://ghproxy.cn \
|
|
|
|
|
+ ...
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+## 支持架构
|
|
|
|
|
+
|
|
|
|
|
+- `linux/amd64` (x86_64)
|
|
|
|
|
+- `linux/arm64` (aarch64)
|
|
|
|
|
+
|
|
|
|
|
+## 相关链接
|
|
|
|
|
+
|
|
|
|
|
+- [MIXAPI 项目主页](https://github.com/aiprodcoder/MIXAPI)
|
|
|
|
|
+- [镜像构建说明](README.md)
|