Web services Docker Compose API调用和端点容器化
使用docker compose,我已经运行了多个容器——其中一个是调用API的探查器容器,另一个容器apiconnection应该接收调用并将信息发送回。但是,当我运行compose文件时,它总是返回Web services Docker Compose API调用和端点容器化,web-services,docker,go,docker-compose,Web Services,Docker,Go,Docker Compose,使用docker compose,我已经运行了多个容器——其中一个是调用API的探查器容器,另一个容器apiconnection应该接收调用并将信息发送回。但是,当我运行compose文件时,它总是返回Gethttp://apiconnection:8080/maccaption: 拨打127.0.0.11:53上的tcp:lookup apiconnection:在http.DefaultClient.Do行的探查器容器上没有这样的主机 这是我的撰写文件的一个示例: apiConnection
Gethttp://apiconnection:8080/maccaption: 拨打127.0.0.11:53上的tcp:lookup apiconnection:在http.DefaultClient.Do
行的探查器容器上没有这样的主机
这是我的撰写文件的一个示例:
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“
像这样查看本地主机url:=”http://localhost:8080/maccaption“
它变为connect
,但我不认为我应该查看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内部运行
我已经查看了这些其他来源的帮助,但没有结果:
任何指点都将不胜感激-谢谢
**编辑-为将来尝试这样做的任何人修复我不可靠的代码格式:上面的代码确实有效。但我错的地方是我的
url:=”http://apiconnection:8080/maccaption“
我指的是图像名称,而不是docker compose中定义的服务名称
更改url以查看服务名称而不是图像名称纠正了这个问题,现在我可以在停靠的环境中进行API调用 “我忽略了错误返回,然后我的程序惊慌失措”显然不是惯用的Go。您需要捕获错误返回。错误消息可能会包含一些有用的内容。感谢您致电@DavidMaze-非常感谢!!它给我带来了一条新的错误信息,让我走上了正确的轨道。我用实际问题修改了原来的问题。