为了账号安全,请及时绑定邮箱和手机立即绑定

无法从同一网络上的容器获得响应,Docker compose,Mountebank

无法从同一网络上的容器获得响应,Docker compose,Mountebank

Go
POPMUISE 2022-10-10 19:40:48
我有一个 Go 应用程序和三个用于应用程序、数据库和 mountebank 的 docker 容器来模拟/存根 HTTP 响应。我希望我的 mountebank 容器在 test_api(应用程序容器)发出请求时返回适当的响应。当我使用 Postman 调用端点时,mountebank 容器会返回正确的响应。但是,当我在 test_api 容器中的代码像下面的代码一样发送 GET 请求时,它总是会收到拨打 tcp 127.0.0.1:3000:连接:连接被拒绝下面是 test_api 如何向 mountebank 容器发送请求func getSuper(id string) (*float64, error) {    var url = "http://localhost:3000/ato/employee/?/balance"    url = strings.Replace(url, "?", id, 1)    log.Println("Sending request to this url: ", url)    resp, err := http.Get(url)    if err != nil {        return nil, &errorhandling.RequestError{Context: "getSuper calling ato api", Code: errorhandling.Internal, Message: err.Error()}    }    body, err := resposeToByte(resp)    if err != nil {        log.Println("err in coverting response to byte[]:", err)        return nil, &errorhandling.RequestError{Context: "getsuper resposeToByte", Code: errorhandling.Internal, Message: err.Error()}    }    superData, err := UnmarshalSuperDetails(body)    if err != nil {        return nil, &errorhandling.RequestError{Context: "UnmarshalSuperDetails())", Code: errorhandling.Internal, Message: err.Error()}    }    log.Println("super details ", superData)    return &superData.SuperBalance, nil}这是我用于 mountebank 的 docker 文件FROM alpine:3.14ENV MOUNTEBANK_VERSION=2.4.0RUN apk add --update nodejs-lts && \    apk add --update npmRUN npm install -g mountebank@${MOUNTEBANK_VERSION} --productionEXPOSE 2525ENTRYPOINT ["mb"]CMD ["start"]如何更改我的代码以使 test_api 收到来自 mountebank 的正确响应?
查看完整描述

1 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

您应该在 test_api 中更改以下行;

var url = "http://localhost:3000/ato/employee/?/balance"

与以下一个;

var url = "http://mountebank:3000/ato/employee/?/balance"

由于这些是不同的容器,您应该在 Docker 环境中指定它们的名称或 IP。您的 test_api 请求其 localhost 并且没有 3000 的开放端口,您将收到连接被拒绝错误。您可以查看Docker Networking以获取更多信息。


查看完整回答
反对 回复 2022-10-10
  • 1 回答
  • 0 关注
  • 73 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信