为了账号安全,请及时绑定邮箱和手机立即绑定

在 Docker 容器中转到服务器空响应

在 Docker 容器中转到服务器空响应

Go
凤凰求蛊 2022-05-23 17:40:13
我有一个类似的 Go 服务器。路由器是 Gorilla MUXvar port stringif port = os.Getenv("PORT"); port == "" {    port = "3000"}srv := &http.Server{    Handler:      router,    Addr:         "localhost:" + port,    WriteTimeout: 15 * time.Second,    ReadTimeout:  15 * time.Second,}fmt.Println("Server is running on port " + port)log.Fatal(srv.ListenAndServe())Dockerfile 是# Build Go ServerFROM golang:1.14 AS go-buildWORKDIR /app/serverCOPY cmd/ ./cmdCOPY internal/ ./internalCOPY go.mod ./COPY go.sum ./RUN go build ./cmd/main.goCMD ["./main"]我成功构建了。我用以下命令运行它docker run -p 3000:3000 baaf0159d0cd     我得到了以下输出。服务器正在运行Server is running on port 3000但是当我尝试使用 curl 发送请求时,我得到了空响应>curl localhost:3000curl: (52) Empty reply from server为什么服务器没有正确响应?我还有另一条路线我没有放在这里,它们也没有正确响应。顺便说一句,我在 MacOS 上。
查看完整描述

1 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

不要使用localhost(基本上是 的别名127.0.0.1)作为 Docker 容器中的服务器地址。如果你这样做,只有'localhost'(即 Docker 容器网络中的任何服务)可以访问它。


删除主机名以确保它可以在容器外访问:


// Addr:         "localhost:" + port, // unreachable outside container

Addr:         ":" + port, // i.e. ":3000" - is accessible outside the container


查看完整回答
反对 回复 2022-05-23
  • 1 回答
  • 0 关注
  • 250 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信