首页 > 解决方案 > 容器化 API 套接字挂起

问题描述

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

根据这个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

标签: dockerrestgocontainerspostman

解决方案


我的问题是我正在启动服务器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,
}

推荐阅读