登录
首页 >  Golang >  Go问答

从一个 Docker 容器到另一个 Docker 容器的 Golang POST 请求

来源:stackoverflow

时间:2024-04-25 15:36:32 375浏览 收藏

有志者,事竟成!如果你在学习Golang,那么本文《从一个 Docker 容器到另一个 Docker 容器的 Golang POST 请求》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

我在一个 docker 容器(端口 5044)中有一台服务器,在另一个 docker 容器(端口 4545)中有一台客户端。我想从客户端向服务器发送 post 请求,但收到一条错误消息“post "http://127.0.0.1:5044/check": dial tcp 127.0.0.1:5044: connect: 连接被拒绝”。

json, err := json.Marshal(x)
if err != nil {
    log.Fatal(err)
}
resp, err := http.Post("http://127.0.0.1:5044/check", "application/json", bytes.NewBuffer(json))
//Handle Error
if err != nil {
    log.Fatalf("An Error Occured %v", err)
}
defer resp.Body.Close()
//Read the response body
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
    log.Fatalln(err)
}
return string(body)

我可以使用邮递员发送帖子请求,一切正常。 我尝试连接到测试互联网服务(https://ptsv2.com/),它也有效。看来 golang 不想通过 docker 连接到本地服务器:/


正确答案


您的 docker 应用程序可以通过 postman 从“外部端口”访问

但是为了让它们能够一起通信,它们需要位于同一网络上

最简单的方法是使用 docker-compose (而不是手动创建网络)official link

version: '3'
services:

first:
  build:
    context: ./your-first-app
    dockerfile: Dockerfile
  ports:
    - '1800:1800'
  networks:
    my-network:

second:
  build:
    context: ./your-second-app
    dockerfile: Dockerfile
  ports:
    - '1801:1801'
  networks:
    my-network:

networks:
  my-network:

您的网络在该行的末尾声明,并且它通过标记网络(位于端口下方)链接到您的 docker 服务

好了,本文到此结束,带大家了解了《从一个 Docker 容器到另一个 Docker 容器的 Golang POST 请求》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>