【问题标题】:The server doesn't respond anymore after I switch framework Gin to Echo将框架 Gin 切换到 Echo 后服务器不再响应
【发布时间】:2019-12-20 14:03:42
【问题描述】:

我曾经使用 Gin(Golang 框架)并将 docker 镜像部署到 GKE。 它工作得很好。

但是当我将 Gin 切换到 Echo 时服务器不再响应(它也是 Golang 框架)

我认为是因为端口组合(端口转发)有问题。

我的回显服务器代码如下所示。

func main() {
    e := presentation.Router()

    e.Logger.Fatal(e.Start(":8080")) // listen and serve on :8080
}

我的 dockerfile 如下所示。

FROM alpine:3.9

WORKDIR /app
ADD main /app

ENV PORT 80

EXPOSE 80

CMD ["./main"]

当请求到达 80 端口时,它必须渲染到 8080 端口(容器端口)。 但目前它似乎不像上面那样工作。

如何匹配外端口和内端口??

【问题讨论】:

  • 监听的是什么主机/接口? 127.0.0.1/localhost?还是0.0.0.0?如果是前者,那就是它不起作用的原因。我的猜测是 Gin 可能默认监听 0.0.0.0 而 Echo 没有?
  • echo 正在侦听并服务于端口 8080,但您正在暴露容器的端口 80,您是否正在做一些端口转发以将请求从 80 定向到 8080,如果是,请分享该代码同样,如果没有,则需要暴露容器的8080端口。
  • @johnharris85 感谢您的回答!实际上 gin 和 echo 都在收听127.0.0.1/localhost
  • @PraveenRewar 我没有做任何关于端口转发的事情。我将EXPOSE 80 更改为EXPOSE 8080 并部署到GKE,但服务器仍然没有给我们任何响应...
  • 您是在尝试从另一个容器还是从主机本身访问 API(或其他任何东西)。如果您尝试从主机访问它,那么您还需要进行端口映射。 docker run -p 8080:8080 image_name 这将在容器运行时将容器的 8080 端口映射到主机的 8080 端口。

标签: docker go kubernetes echo google-kubernetes-engine


【解决方案1】:

使用命令docker run -p 80:8080 image_name运行容器,它会发布容器的8080端口并映射到宿主机的80端口。

【讨论】:

    猜你喜欢
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 2013-12-08
    • 2022-10-13
    • 2020-06-12
    相关资源
    最近更新 更多