Docker-Compose API调用和包含的端点



使用docker-compose,我运行了多个容器-其中一个是调用API的探查器容器,另一个容器apiconnection应该接收调用并发回信息。但是,当我运行compose文件时,它总是在Profiler容器的http.DefaultClient.Do行返回Get http://apiconnection:8080/maccaption: dial tcp: lookup apiconnection on 127.0.0.11:53: no such host

这是我撰写文件的一个示例:

apiConnection:
image: apiconnection:1.0
ports:
- "8080:8080"
networks: 
- maccaptionNet
profiler:
image: profiler:1.0
networks: 
- maccaptionNet
depends_on:
- "apiConnection"

我在我的探查器映像中这样调用api——它在DefaultClient:上出错

url := "http://apiconnection:8080/maccaption"
req, err := http.NewRequest("GET", url, nil)
if err != nil {
log.Fatal(err)
}
res, err := http.DefaultClient.Do(req)
if err != nil {
fmt.Println("Line 27")
log.Fatal(err)
}
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println("Line 33")
log.Fatal(err)
}

如果我修改url := "http://apiconnection:8080/maccaption"以查看localhost,如url := "http://localhost:8080/maccaption",它将更改为connect refused,但我认为我不应该查看localhost。我需要查看Docker容器,不是吗?

我将url设置为与docker容器的连接,并使用我在docker compose文件中分配的端口。并在我的apiconnection图像中接收到请求,如下所示:

r := mux.NewRouter()
r.HandleFunc("/maccaption", handleMaccaption).Methods("GET")
http.ListenAndServe(":8080", r)

它现在所要做的就是启动并发出一个请求来证明它正在工作,并返回一些json信息。此代码在docker之外工作,将url变量中的容器名称替换为localhost。但我无法让它在docker中运行。

我曾向这些其他来源寻求帮助,但都无济于事:如何在docker容器中调用api端点?在Dockers中对端点进行REST调用Docker使用端点编写内部通信

任何建议都将不胜感激-谢谢!

**编辑-修复我不稳定的代码格式

对于将来尝试这样做的人来说:上面的代码实际上确实有效。但我的错误之处在于,在我的url := "http://apiconnection:8080/maccaption"中,我引用的是映像名称,而不是我在docker compose中定义的服务名称。

更改url以查看服务名称而不是图像名称纠正了这个问题,现在我可以在我的dockerized环境中进行API调用。

相关内容

  • 没有找到相关文章