Docker端口未暴露Golang

时间:2018-07-07 23:45:05

标签: docker networking

我正在docker中构建golang WebService。构建似乎很好,但我无法公开端口以进行外部(容器外部)访问。当我从命令行(在容器内部)卷曲时,该应用程序似乎可以正常工作。

我看到了很多类似问题的帖子,但是不幸的是,许多帖子没有解决或似乎不适用。

FROM golang:alpine
RUN mkdir /go/src/webservice_refArch
ADD . /go/src/webservice_refArch
WORKDIR /go/src/webservice_refArch
RUN apk add curl
RUN cd /go/src/webservice_refArch/ && go get ./...
RUN cd /go/src/webservice_refArch/cmd/reference-w-s-server && go build -o ../../server
EXPOSE 7878
ENTRYPOINT ["./server", "--port=7878"]

我都尝试过:

  • :7878
  • 本地主机:7878

3 个答案:

答案 0 :(得分:2)

请参见https://docs.docker.com/engine/reference/run/#expose-incoming-ports,仅在dockerfile中公开端口是不够的。

您可以在启动容器时添加-p 7878:7878,或使用-P让docker为您设置自动主机端口映射。

如果您不想执行上述操作,也可以在启动容器时添加--net=host,然后容器将使用主机的网络,如果您也可以使用的话。

答案 1 :(得分:0)

如果您尝试从本地计算机访问docker容器内的端口,则需要将其映射到本地计算机上的所需端口 INSERT INTO newtable partition(Col21) SELECT Col1, Col2, Col3.....Col20, unix_timestamp() AS Col21 FROM oldTable 然后,您应该可以在主机上访问它了

答案 2 :(得分:0)

我遇到了同样的问题。然后我所做的是将 ListernHost 从 localhost 更改为 0.0.0.0 并且它起作用了。

为了调试这个在容器内尝试过的 curl,它工作正常,但在容器外,curl 的响应是空白的。端口已映射,但内容未在容器外提供。将“localhost”更改为 0.0.0.0 后,它将起作用。