
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
grpc-wiremock是一个GRPC服务模拟服务器,作为WireMock HTTP服务器的包装器实现。它允许开发人员轻松模拟GRPC服务,通过将GRPC请求转换为JSON格式与WireMock交互,再将WireMock的HTTP响应转换回GRPC协议格式。
tcp://localhost:50000http://localhost:8888)poshdocker run -p 8888:8888 -p 50000:50000 -v $(pwd)/example/proto:/proto -v $(pwd)/example/wiremock:/wiremock adven27/grpc-wiremock
-p 8888:8888: 映射WireMock HTTP服务器端口-p 50000:50000: 映射GRPC服务器端口-v $(pwd)/example/proto:/proto: 挂载proto文件目录-v $(pwd)/example/wiremock:/wiremock: 挂载WireMock配置目录通过WireMock API创建存根:
jsoncurl -X POST http://localhost:8888/__admin/mappings \ -d '{ "request": { "method": "POST", "url": "/BalanceService/getUserBalance", "bodyPatterns" : [ { "equalToJson" : { "id": "1", "currency": "EUR" } } ] }, "response": { "status": 200, "jsonBody": { "balance": { "amount": { "value": { "decimal" : "100.0" }, "value_present": true }, "currency": { "value": "EUR", "value_present": true } } } } }'
使用grpcurl发送GRPC请求:
poshgrpcurl -plaintext -d '{"id": 1, "currency": "EUR"}' localhost:50000 api.wallet.BalanceService/getUserBalance
预期响应:
json{ "balance": { "amount": { "value": { "decimal": "100.0" }, "value_present": true }, "currency": { "value": "EUR", "value_present": true } } }
存根配置需通过WireMock JSON API进行,可配置请求匹配规则、响应内容、状态码等。
支持以下GRPC服务器属性配置:
propertiesGRPC_SERVER_MAXHEADERLISTSIZE GRPC_SERVER_MAXMESSAGESIZE GRPC_SERVER_MAXINBOUNDMETADATASIZE GRPC_SERVER_MAXINBOUNDMESSAGESIZE
注:前两个属性已被后两个取代,建议使用后者
使用示例:
poshdocker run -e GRPC_SERVER_MAXINBOUNDMESSAGESIZE=1048576 adven27/grpc-wiremock
若无需修改proto文件,可构建包含预编译proto的自定义镜像,示例Dockerfile:
dockerfileFROM adven27/grpc-wiremock COPY ./proto /proto
通过EXT_CODECS环境变量启用snappy压缩:
poshdocker run -e EXT_CODECS=snappy adven27/grpc-wiremock
docker-compose配置示例:
yamlversion: '3' services: grpc-mock: image: adven27/grpc-wiremock ports: - "50000:50000" # GRPC端口 - "8888:8888" # WireMock HTTP端口 volumes: - ./proto:/proto environment: - EXT_CODECS=snappy
注:gzip压缩默认已支持
启用"load"配置文件可优化性能,等价于设置多个WireMock参数:
poshdocker run -e SPRING_PROFILES_ACTIVE=load adven27/grpc-wiremock
等价于手动设置以下参数:
poshdocker run \ -e WIREMOCK_SERVER_DISABLEREQUESTJOURNAL=true \ -e WIREMOCK_SERVER_ASYNCHRONOUSRESPONSEENABLED=true \ -e WIREMOCK_SERVER_ASYNCHRONOUSRESPONSETHREADS=10 \ -e WIREMOCK_SERVER_STUBREQUESTLOGGINGDISABLED=true \ -e WIREMOCK_SERVER_VERBOSE=false \ adven27/grpc-wiremock
HTTP状态码与GRPC状态码映射关系如下:
| HTTP状态码 | GRPC状态码 |
|---|---|
| 400 Bad Request | INTERNAL |
| 401 Unauthorized | UNAUTHENTICATED |
| 403 Forbidden | PERMISSION_DENIED |
| 404 Not Found | UNIMPLEMENTED |
| 429 Too Many Requests | UNAVAILABLE |
| 502 Bad Gateway | UNAVAILABLE |
| 503 Service Unavailable | UNAVAILABLE |
| 504 Gateway Timeout | UNAVAILABLE |
| 其他所有状态码 | UNKNOWN |
创建返回403状态码的存根:
jsoncurl -X POST http://localhost:8888/__admin/mappings \ -d '{ "request": { "method": "POST", "url": "/BalanceService/getUserBalance", "bodyPatterns" : [ { "equalToJson" : { "id": "1", "currency": "EUR" } } ] }, "response": { "status": 403, "body": "you can't access here" } }'
GRPC请求响应:
json{ "error": "7 PERMISSION_DENIED: " }
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

来自真实用户的反馈,见证轩辕镜像的优质服务