首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拨tcp 127.0.0.1:8000: connect: connect:connect拒绝连接戈朗码头集装箱

拨tcp 127.0.0.1:8000: connect: connect:connect拒绝连接戈朗码头集装箱
EN

Stack Overflow用户
提问于 2020-09-13 17:46:35
回答 2查看 11.4K关注 0票数 4

我试图提出一个http请求从一个项目到另一个项目,都使用GO。提出请求的项目具有以下dockerfile:

代码语言:javascript
复制
FROM golang:alpine as builder
WORKDIR /build
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-extldflags "-static"' -o main .
FROM scratch
WORKDIR /app
COPY --from=builder /build .
CMD ["./main"]

等待请求的项目正在localhost:8000上运行,它具有以下dockerfile:

代码语言:javascript
复制
FROM golang:1.13.8 AS build-env
ADD . /dockerdev
WORKDIR /dockerdev
RUN go get -d -v ./...
RUN go build -o /server
# Final stage
FROM debian:buster
EXPOSE 8000
WORKDIR /
COPY --from=build-env /server /
CMD ["/server"]

当我

代码语言:javascript
复制
resp, err := http.Post("http://localhost:8000/orders", "application/json", bytes.NewBuffer(requestBody))

它给出了以下错误

拨号tcp 127.0.0.1:8000:连接:连接被拒绝

我是新来的码头,所以任何改进都欢迎!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-13 18:22:18

扩展我的评论。客户端代码的网络地址将无法工作:

代码语言:javascript
复制
resp, err := http.Post("http://localhost:8000/orders", "application/json", bytes.NewBuffer(requestBody)) // broken

因为它实际上是在自言自语(localhost指的是客户端停靠容器,而不是主机操作系统)。

为了测试目的,向主机操作系统公开这两个容器的最快方法如下:

代码语言:javascript
复制
docker run -it --rm -p 8000:8000 dockweb  # server container
docker run -it --rm --net host dockcli    # client container

除了琐碎的测试之外,这很快就会变得难以处理。因此,我建议使用像码头工这样的东西,它允许您以琐碎的方式链接容器及其网络。

票数 6
EN

Stack Overflow用户

发布于 2022-04-07 13:06:58

尝试使用0.0.0.0而不是localhost。这将解决连接拒绝的错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63873817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档