# MIXAPI Docker 镜像构建说明 - 国内版本 本目录包含在国内服务器上构建 MIXAPI Docker 镜像的相关文件,针对国内网络环境做了优化。 ## 文件说明 | 文件 | 说明 | |------|------| | `Dockerfile` | Docker 镜像构建文件(使用华为云镜像源) | | `common.sh` | 公共函数库(使用 GitHub 代理加速) | | `run.sh` | 主启动脚本(构建时下载初始版本、运行时设置定时任务) | | `check_update.sh` | 更新检测脚本(由 crontab 定时调用) | ## 构建方法 ```bash # 进入国内版本目录 cd mixapi/china # 构建镜像 docker build -t mixapi:latest . # 多架构构建(需要 buildx) docker buildx build --platform linux/amd64,linux/arm64 -t mixapi:latest --push . ``` ## 运行方法 ```bash # 基本运行(使用默认代理 ghfast.top) docker run -d -p 3000:3000 mixapi:latest # 使用自定义 GitHub 代理 docker run -d -p 3000:3000 -e GITHUB_PROXY=https://mirror.ghproxy.com mixapi:latest # 挂载数据目录 docker run -d -p 3000:3000 -v /path/to/data:/data mixapi:latest ``` ## 国内加速优化 ### 1. Docker 基础镜像加速 使用华为云镜像源拉取基础镜像: | 原始镜像 | 加速镜像 | |----------|----------| | `busybox:glibc` | `swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/busybox:glibc` | ### 2. GitHub 代理加速 通过代理加速 GitHub API 和文件下载: | 项目 | 配置 | |------|------| | 默认代理 | `https://ghfast.top` | | GitHub API | `${GITHUB_PROXY}/https://api.github.com/repos/aiprodcoder/MIXAPI/releases/latest` | | 文件下载 | `${GITHUB_PROXY}/https://github.com/aiprodcoder/MIXAPI/releases/download/` | ### 3. 环境变量配置 支持通过环境变量 `GITHUB_PROXY` 覆盖默认代理: ```bash # 使用默认代理 docker run -d mixapi:latest # 使用自定义代理 docker run -d -e GITHUB_PROXY=https://ghproxy.net mixapi:latest # 不使用代理(直连,需要网络支持) docker run -d -e GITHUB_PROXY="" mixapi:latest ``` ## 工作原理 ### 构建时 1. 使用华为云镜像源拉取 `busybox:glibc` 基础镜像 2. 复制脚本文件到 `/app/` 目录 3. 运行 `run.sh OnlyUpdate` 通过代理下载当前最新版本的 MIXAPI ### 运行时 1. 设置 crontab 定时任务(每天执行一次更新检测) 2. 启动 busybox crond 后台服务 3. 后台执行一次更新检测(通过代理) 4. 前台启动 MIXAPI 服务 ### 定时更新 - 每天在容器启动时间的上一分钟执行更新检测 - 检测到新版本时自动通过代理下载并热更新 - 更新日志记录在 `/app/update.log` ## 常用 GitHub 代理 如果默认代理不可用,可以尝试以下代理: | 代理名称 | 地址 | |----------|------| | ghfast | `https://ghfast.top` | | ghproxy.net | `https://ghproxy.net` | | mirror.ghproxy.com | `https://mirror.ghproxy.com` | | gh-proxy.com | `https://gh-proxy.com` | ## 支持架构 - `linux/amd64` (x86_64) - `linux/arm64` (aarch64) ## 端口 - `3000`: MIXAPI 服务端口 ## 数据目录 - `/data`: 工作目录,建议挂载持久化存储 - `/app`: 程序目录,包含可执行文件和脚本