
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
mockserver是namshi/mockserver的重新实现,旨在解决原项目缺乏维护和功能不足的问题。它允许通过文件目录结构和命名规则模拟API响应,支持多文件导入、代码评估、中间件等扩展功能,适用于API开发测试、前端与后端并行开发时的接口模拟场景。
before或after中间件,为所有请求添加通用功能或实现复杂逻辑。Response-Delay头设置响应延迟时间(毫秒)。基本运行命令
bashdocker run -p 8080:8080 -v $(pwd)/mocks:/mocks docker.xuanyuan.run/gguridi/mockserver -m /mocks
自定义端口和日志级别
bashdocker run -p 9000:9000 -v $(pwd)/mocks:/mocks docker.xuanyuan.run/gguridi/mockserver -m /mocks -p 9000 -l debug
启用特定headers匹配
bashdocker run -e MOCK_HEADERS=Content-Type,Accept -p 8080:8080 -v $(pwd)/mocks:/mocks docker.xuanyuan.run/gguridi/mockserver -m /mocks
挂载中间件目录
bashdocker run -p 8080:8080 -v $(pwd)/mocks:/mocks -v $(pwd)/middlewares:/middlewares docker.xuanyuan.run/gguridi/mockserver -m /mocks -w /middlewares
docker-compose配置示例
yamlversion: '3' services: mockserver: image: docker.xuanyuan.run/gguridi/mockserver ports: - "8080:8080" volumes: - ./mocks:/mocks # 挂载mock文件目录 - ./middlewares:/middlewares # 挂载中间件目录 environment: - MOCK_HEADERS=Content-Type,Accept # 设置用于匹配的headers command: -m /mocks -w /middlewares -p 8080 -l info # 启动参数
| 参数 | 说明 | 示例 |
|---|---|---|
-m, --mocks | 指定mock文件目录(必填) | -m /mocks |
-p, --port | 服务端口,默认8080 | -p 9000 |
-l, --log-level | 日志级别(debug/info/warn/error),默认info | -l debug |
-h, --headers | 用于匹配的headers列表(逗号分隔) | -h Content-Type,Accept |
-w, --middlewares | 中间件目录 | -w /middlewares |
-b, --body-parser | 请求体解析器类型(json/text/raw/urlencoded),默认json | -b urlencoded |
| 环境变量 | 说明 | 示例 |
|---|---|---|
MOCK_HEADERS | 等效于-h参数,指定用于匹配的headers | Content-Type,Accept |
文件命名格式
$REQUEST-PATH/${HTTP-METHOD}--${BODY}--${QUERY PARAMS}_${HEADERS}.mock
示例场景
当请求为:
/path/subpath/item?param1=value1{"key":"value"}X-H1=h1, X-H2=h2(已通过-h X-H1,X-H2启用)mockserver将按优先级检查以下文件(部分示例):
/path/subpath/item/POST--param1=value1--key=value_X-H1=h1,X-H2=h2.mock /path/subpath/item/POST--param1=value1--key=value_X-H1=h1.mock /path/subpath/item/POST--param1=value1--key=value.mock /path/subpath/item/POST--param1=value1.mock /path/subpath/__/POST.mock # 通配符目录匹配
通配符目录
使用__作为目录名可匹配动态路径片段,例如:
users/__可匹配/users/1、/users/2等路径users/__/GET.mock将响应所有/users/*的GET请求多文件导入
在.mock文件中使用#import语法导入其他文件内容:
#import ./data.json; # 导入JSON数据 #import ./utils.js; # 导入并执行JS文件,注入返回值
示例:
json{ "user": #import ./user.json;, "orders": #import ./load-orders.js; }
代码评估
使用{{ }}包裹代码片段,在响应中动态生成内容:
{{ request.body.id ? 200 : 404 }} # 动态状态码 X-Request-ID: {{ Math.random().toString(36).substr(2, 9) }} # 动态头 {{ // 多行代码 const now = new Date(); `Current time: ${now.toISOString()}`; }}
中间件
在中间件目录中创建before.js(请求处理前执行)和after.js(请求处理后执行):
before.js示例:
javascriptconst addTimestamp = (req, res, next) => { req.headers["X-Request-Time"] = new Date().toISOString(); next(); }; module.exports = { addTimestamp };
中间件按导出顺序执行,可修改请求/响应对象,影响后续处理。
响应延迟
在.mock文件或中间件中添加Response-Delay头设置延迟:
Response-Delay: 2000 # 延迟2秒响应
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 gguridi/mockserver 相关的常用 Docker 镜像,适用于 不同场景 等不同场景: