【问题标题】:Containerized API socket hangs up容器化 API 套接字挂起
【发布时间】:2021-05-07 05:51:13
【问题描述】:

我刚刚完成了一个 Go REST API 的工作,我想将我的代码移动到一个容器中。我已经完成了这项工作,但由于错误:Error: socket hang up 被抛出,我无法通过邮递员访问我的端点。

根据这个SO thread,这可能是我的防火墙造成的,在运行ufw status之后我注意到我的防火墙没有启动,所以我不确定是什么导致了这个错误。

我的应用程序似乎运行正常,我在本地机器上将容器映射到端口 8080。

└─(19:14:04 on master ✭)──> docker ps                                                                                                                     ──(Tue,Feb02)─┘
CONTAINER ID   IMAGE        COMMAND       CREATED          STATUS          PORTS                    NAMES
b001f19e2957   go-library   "./library"   15 minutes ago   Up 15 minutes   0.0.0.0:8080->8080/tcp   cranky_kare

我还确保我的请求正在使用此端口。

GET http://localhost:8080/books/3
Error: socket hang up
Request Headers
User-Agent: PostmanRuntime/7.26.10
Accept: */*
Postman-Token: 190a5849-b859-4324-a65e-37a7b69b49fb
Host: localhost:8080
Accept-Encoding: gzip, deflate, br

【问题讨论】:

  • 你发现了吗?我遇到了同样的错误

标签: docker rest go containers postman


【解决方案1】:

我的问题是我在127.0.0.1 上启动服务器并且端口映射没有指向这个接口。在所有接口上启动它 (0.0.0.0) 对我有用:

addr := fmt.Sprintf("0.0.0.0:%v", settings.Port)
server := &http.Server{
    Addr:         addr,
    Handler:      app.Router,
    IdleTimeout:  120 * time.Second,
    ReadTimeout:  5 * time.Second,
    WriteTimeout: 5 * time.Second,
}

【讨论】:

  • 您好!我似乎没有遵循解决方案,您能否提供更详细的解释?
  • 在go中,我将地址设置为0.0.0.0:port,而不是127.0.0.1:port
  • 解决方法没有解释清楚。
  • @Marci-man 从我的代码中添加了一个 sn-p
猜你喜欢
  • 2014-04-12
  • 1970-01-01
  • 1970-01-01
  • 2019-10-14
  • 2016-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多