You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker中MockServer转发请求至WireMock的配置问题

Docker环境下MockServer转发请求到WireMock的配置问题

背景

刚接触Mock技术,已在Docker中部署WireMock和MockServer,两者单独运行时,访问各自的/hello接口都能正常返回字符串hello。现在需要实现:访问MockServer的/hello时,MockServer将请求转发至WireMock的/hello,由WireMock返回响应。

本地访问地址:

  • WireMock:http://localhost:3001/hello
  • MockServer:http://localhost:3000/hello

尝试情况

参考MockServer官方提供的请求转发示例:

{
  "httpRequest": {
    "path": "/some/path"
  },
  "httpForward": {
    "host": "mock-server.com",
    "port": 80,
    "scheme": "HTTP"
  }
}

适配后无法生效,已创建Docker网络并将两个容器加入,容器间能ping通,但配置后响应要么是404未找到,要么是连接拒绝。目前只有302重定向的配置能生效,但这并非预期的转发方式:

{
  "httpRequest": {
    "method": "GET",
    "path": "/test"
  },
  "httpResponse": {
    "statusCode": 302,
    "headers": {
      "Location": ["http://localhost:3000/hello"]
    }
  }
}

正确配置方案

问题核心是Docker容器间访问不能用宿主机的localhost,需使用容器名称或Docker网络内的IP,同时注意容器内部端口(而非宿主机映射端口):

假设WireMock的容器名称为wiremock(可通过docker ps查看),容器内部端口为默认的8080(你本地映射到了3001),正确的转发配置如下:

{
  "httpRequest": {
    "method": "GET",
    "path": "/hello"
  },
  "httpForward": {
    "host": "wiremock",
    "port": 8080,
    "scheme": "HTTP",
    "path": "/hello"
  }
}

配置说明

  • host字段:使用WireMock容器的名称(或其在Docker网络中的IP),容器间通过网络名称可直接通信,无需用宿主机IP
  • port字段:填写WireMock容器内部的端口(默认8080),而非宿主机的映射端口3001
  • path字段:明确指定转发到WireMock的/hello路径,确保请求路径正确匹配

内容的提问来源于stack exchange,提问作者Alexander Wang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 09:35:01