Files
qiming/qiming-mcp-proxy/docker/README.md
2026-06-01 13:03:20 +08:00

199 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Docker 配置说明
本目录包含 mcp-proxy 项目的所有 Docker 相关配置文件,与线上环境保持依赖一致。
## 文件说明
### Dockerfile.mcp-proxy
mcp-proxy 的 Docker 构建文件,采用多阶段构建:
**构建阶段:**
- 基础镜像:`rust:1.90`
- 设置时区:`Asia/Shanghai`
- 构建命令:`cargo build --release --bin mcp-proxy`
**运行阶段:**
- 基础镜像:`rust:1.90`
- 包含完整的运行时环境(与线上环境一致)
- 支持 Node.js 22.x、Python 3、Deno、Go 1.24.3
### Dockerfile.document-parser
document-parser 和 voice-cli 的 Docker 构建文件,采用多阶段构建:
**构建阶段:**
- 基础镜像:`rust:1.90`
- 构建命令:`cargo build --release`
**运行阶段:**
- 使用 `scratch` 基础镜像(最小化镜像)
- 支持两个目标:
- `runtime` - document-parser 运行时
- `runtime-voice-cli` - voice-cli 运行时
- `export` - 导出所有二进制文件
### config.yml
mcp-proxy 的默认配置文件。
### docker-compose.yml
Docker Compose 配置文件,用于快速启动 mcp-proxy 服务。
### .npmrc
npm 国内镜像源配置(淘宝镜像),用于 Node.js 包管理:
```ini
registry=https://registry.npmmirror.com/
```
### pip.conf
pip 国内镜像源配置(清华大学镜像),用于 Python 包管理:
```ini
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
```
## 运行时环境
### mcp-proxy 容器
| 环境 | 版本 | 用途 |
|------|------|------|
| Rust | 1.90 | 基础运行时 |
| Node.js | 22.x | run_code 功能执行 Node.js 代码 |
| Python | 3.x + uv | run_code 功能执行 Python 代码 |
| Deno | 最新版 | run_code 功能执行 TypeScript/JavaScript 代码 |
| Go | 1.24.3 | run_code 功能执行 Go 代码 |
### 额外工具
| 工具 | 用途 |
|------|------|
| ffmpeg | 音视频处理 |
| vim | 文本编辑 |
| net-tools | 网络工具 |
| telnet | 网络调试 |
| wget | 文件下载 |
### document-parser/voice-cli 容器
使用 `scratch` 基础镜像,仅包含二进制文件,无额外依赖。
## 国内镜像源配置
容器内已配置以下国内镜像源:
| 工具 | 镜像源 | 配置位置 |
|------|--------|----------|
| npm | 淘宝镜像 | `/root/.npmrc` |
| pip | 清华大学镜像 | `/etc/pip.conf` |
| uv | 阿里云镜像 | `UV_INDEX_URL` 环境变量 |
## Go MCP 工具
mcp-proxy 容器内预装了 `go-mcp-mysql` 工具用于测试:
```bash
go install -v github.com/Zhwt/go-mcp-mysql@latest
```
## 使用方法
### 构建 mcp-proxy 镜像
```bash
# 使用 docker build
docker build -f docker/Dockerfile.mcp-proxy -t mcp-proxy:latest ..
# 或使用 Make 命令
make build-image
# 构建 ARM64 镜像
docker build -f docker/Dockerfile.mcp-proxy --platform linux/arm64 -t mcp-proxy:latest ..
```
### 构建 document-parser 镜像
```bash
# 使用 docker build
docker build -f docker/Dockerfile.document-parser --target runtime -t document-parser:latest ..
# 或使用 Make 命令
make build-image-document-parser
# 构建 voice-cli 镜像
docker build -f docker/Dockerfile.document-parser --target runtime-voice-cli -t voice-cli:latest ..
```
### 使用 docker-compose推荐
```bash
# 启动服务
cd docker && docker-compose up
# 后台启动
cd docker && docker-compose up -d
# 查看日志
cd docker && docker-compose logs -f
# 停止服务
cd docker && docker-compose down
```
### 使用 Make 命令
```bash
# mcp-proxy 相关
make build-mcp-proxy-x86_64 # 构建 mcp-proxy x86_64 版本
make build-image # 构建 mcp-proxy Docker 镜像
make run-compose # 使用 docker-compose 启动
# document-parser 相关
make build-document-parser-x86_64 # 构建 document-parser x86_64 版本
make build-image-document-parser # 构建 document-parser Docker 镜像
# voice-cli 相关
make build-voice-cli-x86_64 # 构建 voice-cli x86_64 版本
```
## 环境变量
### mcp-proxy 容器
| 环境变量 | 说明 | 默认值 |
|----------|------|--------|
| RUST_LOG | 日志级别 | info |
| TZ | 时区 | Asia/Shanghai |
| UV_INDEX_URL | uv 镜像源 | https://mirrors.aliyun.com/pypi/simple |
## 挂载目录
### mcp-proxy 容器
- `./config.yml` - 配置文件(只读)
- `./logs` - 日志目录(持久化)
## 健康检查
mcp-proxy 容器包含健康检查,定期检查 `/health` 端点:
- 检查间隔30 秒
- 超时时间10 秒
- 重试次数3 次
- 启动等待5 秒
## 线上环境一致性
本目录的 Dockerfile 与线上环境保持依赖一致:
- `Dockerfile.mcp-proxy` 对应 `/Volumes/soddygo/git_work/build-agent-docker/build_config/mcp_proxy/Dockerfile`
## 目录结构
```
docker/
├── Dockerfile.mcp-proxy # mcp-proxy Docker 构建文件
├── Dockerfile.document-parser # document-parser/voice-cli Docker 构建文件
├── config.yml # mcp-proxy 默认配置
├── docker-compose.yml # Docker Compose 配置
├── .npmrc # npm 国内镜像源配置
├── pip.conf # pip 国内镜像源配置
└── README.md # 本文档
```