150 lines
2.9 KiB
Markdown
150 lines
2.9 KiB
Markdown
# NJUPT MCP Server - Docker 部署指南
|
||
|
||
## 🚀 快速开始
|
||
|
||
### 方式一:使用 Docker Compose(推荐)
|
||
|
||
```bash
|
||
# 1. 构建并启动
|
||
docker-compose up -d
|
||
|
||
# 2. 查看日志
|
||
docker-compose logs -f
|
||
|
||
# 3. 停止服务
|
||
docker-compose down
|
||
```
|
||
|
||
### 方式二:使用 Docker 命令
|
||
|
||
```bash
|
||
# 1. 构建镜像
|
||
docker build -t njupt-mcp:latest .
|
||
|
||
# 2. 运行容器
|
||
docker run -d \
|
||
--name njupt-mcp \
|
||
-p 8000:8000 \
|
||
-e COURSE_SCHEDULE=/app/data/course_schedule.html \
|
||
-v $(pwd)/src/njupt_mcp/resources/course_schedule/B240423-22.html:/app/data/course_schedule.html:ro \
|
||
--restart unless-stopped \
|
||
njupt-mcp:latest
|
||
|
||
# 3. 查看日志
|
||
docker logs -f njupt-mcp
|
||
|
||
# 4. 停止并删除
|
||
docker stop njupt-mcp
|
||
docker rm njupt-mcp
|
||
```
|
||
|
||
## ⚙️ 配置说明
|
||
|
||
### 环境变量
|
||
|
||
| 变量名 | 说明 | 默认值 |
|
||
|--------|------|--------|
|
||
| `COURSE_SCHEDULE` | 课表 HTML 文件路径(容器内) | `/app/data/course_schedule.html` |
|
||
|
||
### 传输模式
|
||
|
||
容器默认使用 **SSE 模式** 运行,可通过修改 `docker-compose.yml` 或启动命令切换:
|
||
|
||
```yaml
|
||
# stdio 模式(主要用于调试)
|
||
command: ["--transport", "stdio"]
|
||
|
||
# streamable-http 模式
|
||
command: ["--transport", "streamable-http", "--host", "0.0.0.0", "--port", "8000"]
|
||
```
|
||
|
||
## 📁 数据挂载
|
||
|
||
课表文件通过 Docker Volume 挂载到容器内,这样无需重新构建镜像即可更新课表:
|
||
|
||
```yaml
|
||
volumes:
|
||
- /主机/路径/到/课表.html:/app/data/course_schedule.html:ro
|
||
```
|
||
|
||
`:ro` 表示只读挂载,增加安全性。
|
||
|
||
## 🔒 安全建议
|
||
|
||
1. **使用非 root 用户**:Dockerfile 已配置使用 `appuser` (UID 1000) 运行
|
||
2. **只读挂载**:课表文件以只读方式挂载
|
||
3. **资源限制**:docker-compose.yml 中配置了 CPU 和内存限制
|
||
4. **健康检查**:自动检测服务状态,失败时重启
|
||
|
||
## 🌐 访问方式
|
||
|
||
启动后,MCP 服务器在以下地址可用:
|
||
|
||
- **SSE 端点**: `http://<服务器IP>:8000/sse`
|
||
- **消息端点**: `http://<服务器IP>:8000/messages`
|
||
|
||
在 MCP Inspector 中配置服务器 URL:
|
||
```
|
||
http://your-server-ip:8000/sse
|
||
```
|
||
|
||
## 🐛 常见问题
|
||
|
||
### 1. 课表文件找不到
|
||
|
||
确保挂载路径正确:
|
||
```bash
|
||
# 检查容器内文件是否存在
|
||
docker exec njupt-mcp ls -la /app/data/
|
||
```
|
||
|
||
### 2. 端口冲突
|
||
|
||
修改 `docker-compose.yml` 中的端口映射:
|
||
```yaml
|
||
ports:
|
||
- "8080:8000" # 主机8080映射到容器8000
|
||
```
|
||
|
||
### 3. 权限问题
|
||
|
||
如果课表文件权限不足:
|
||
```bash
|
||
chmod 644 /path/to/course_schedule.html
|
||
```
|
||
|
||
### 4. 查看详细日志
|
||
|
||
```bash
|
||
# 调试模式启动
|
||
docker run -e DEBUG=1 njupt-mcp:latest
|
||
|
||
# 或修改 docker-compose.yml
|
||
environment:
|
||
- DEBUG=1
|
||
```
|
||
|
||
## 🔄 更新部署
|
||
|
||
更新代码后重新构建:
|
||
|
||
```bash
|
||
# 拉取最新代码后
|
||
docker-compose down
|
||
docker-compose build --no-cache
|
||
docker-compose up -d
|
||
```
|
||
|
||
## 📊 监控
|
||
|
||
查看容器状态:
|
||
```bash
|
||
docker ps
|
||
docker stats njupt-mcp
|
||
```
|
||
|
||
查看资源使用:
|
||
```bash
|
||
docker system df
|
||
```
|