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
相关产品推荐
相关产品推荐

