199 lines
5.1 KiB
Markdown
199 lines
5.1 KiB
Markdown
# 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 # 本文档
|
||
```
|