
Mmock是一款面向开发者的测试和快速原型设计工具,作为轻量级HTTP模拟服务器,它允许开发者通过JSON或YAML文件定义模拟规则,配置应用端点使用模拟服务,并在Web界面中 inspect 请求数据。Mmock采用Go语言构建,无需安装即可在多平台运行,适用于API测试、服务原型设计、状态模拟等场景。
/hello/:name)*hello*)拉取镜像
bashdocker image pull jordimartin/mmock
运行容器
bashdocker run -v YOUR_ABS_PATH:/config -p 8082:8082 -p 8083:8083 jordimartin/mmock
-v YOUR_ABS_PATH:/config:挂载本地目录到容器内的/config,用于存放模拟规则文件(JSON/YAML)-p 8082:8082:映射Web控制台端口-p 8083:8083:映射模拟服务器端口模拟规则通过JSON或YAML文件定义,存放于挂载的/config目录中。
JSON格式示例
json{ "request": { "method": "GET", "path": "/hello/*" }, "response": { "statusCode": 200, "headers": { "Content-Type": ["application/json"] }, "body": "{\"hello\": \"{{request.query.name}}, my name is {{fake.FirstName}}\"}" } }
YAML格式示例(支持单个文件多个请求)
yaml--- request: method: GET path: "/hello/*" response: statusCode: 200 headers: Content-Type: - application/json body: '{"hello": "{{request.query.name}}, my name is {{fake.FirstName}}"}'
请求(Request)
定义匹配条件,包含以下字段:
host:请求主机名(不含端口)method:HTTP方法(必填,支持多方法用|分隔,如GET|POST)path:资源路径(必填,支持:variable命名参数和通配符)queryStringParameters:查询字符串参数(支持多值)headers:请求头(区分大小写,支持多值)cookies:Cookie键值对body:请求体(支持通配符匹配)响应(Response,代理模式下可选)
定义匹配后的响应,包含:
statusCode:HTTP状态码(如200、404、500)headers:响应头(支持多值和变量)cookies:响应Cookie(支持变量)body:响应体(支持变量)控制(Control,可选)
高级配置选项:
scenario:场景配置(name场景名称、requiredState当前所需状态、newState匹配后新状态)proxyBaseURL:代理基础URL(将请求转发至该URL,无需定义response)delay:响应延迟(秒,模拟网络或服务器性能问题)crazy:是否启用疯狂模式(随机返回5xx错误,模拟服务器故障)priority:匹配优先级(数值越高优先级越高,避免被宽松规则匹配)webHookURL:匹配后通知的WebHook端点响应中可使用变量标签{{nameVar}},支持以下类型:
请求数据变量
提取请求中的数据:
request.scheme:请求协议(http/https)request.hostname:主机名request.port:端口request.path:完整路径request.path."key":路径中的命名参数(如/user/:id对应request.path.id)request.query."key":查询参数(如?name=test对应request.query.name)request.cookie."key":Cookie值request.url:完整URL(含协议、主机、端口、路径和查询参数)request.body:请求体(支持JSON/XML/表单数据的键值提取,如request.body.user.name)伪造数据变量(fake)
生成随机测试数据:
fake.FirstName:名fake.LastName:姓fake.FullName:全名fake.EmailAddress:***fake.City:城市fake.Country:国家fake.IPv4:IPv4地址fake.UUID:UUIDfake.Int(n):小于n的随机整数fake.Word:随机单词外部流变量
file.contents(FILE_PATH):读取文件内容http.contents(URL):获取URL响应内容场景用于模拟有状态服务,通过状态机管理服务行为。默认初始状态为not_started,可通过requiredState指定匹配所需状态,newState设置匹配后的新状态。
示例流程:
GET /user 需状态created,返回404POST /user 需状态not_started,返回201并更新状态为createdGET /user 需状态created,返回200Mmock提供REST API用于管理请求、场景和模拟规则:
验证请求
GET /api/request/all:获取所有请求记录GET /api/request/matched:获取所有匹配的请求POST /api/request/verify:验证是否收到匹配特定规则的请求场景管理
GET /api/scenarios/reset_all:重置所有场景状态PUT /api/scenarios/set/:scenario/:state:设置场景状态PUT /api/scenarios/pause:暂停场景状态更新PUT /api/scenarios/unpause:恢复场景状态更新模拟规则管理
GET /api/mapping:获取所有模拟规则POST /api/mapping/:uri:创建模拟规则PUT /api/mapping/:uri:更新模拟规则DELETE /api/mapping/:uri:删除模拟规则Mmock默认收集***使用统计(如模拟请求数、控制台使用次数等),可通过启动参数-server-statistics=false禁用。
通过命令行参数配置Mmock(Docker运行时可添加至docker run命令末尾):
-config-path string 模拟规则目录(默认"execution_path/config") -console bool 是否启用控制台(默认true) -console-ip string 控制台IP(默认公共IP) -console-port int 控制台端口(默认8082) -request-storage-capacity int 请求存储容量(0为无限,默认100) -server-ip string 模拟服务器IP(默认公共IP) -server-port int 模拟服务器端口(默认8083) -server-statistics bool 是否启用统计(默认true) -server-tls-port int TLS端口(默认8084) -tls-path string TLS配置目录(默认"execution_path/tls")
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务