我试图提出一个http请求从一个项目到另一个项目,都使用GO。提出请求的项目具有以下dockerfile:
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:
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"]当我
resp, err := http.Post("http://localhost:8000/orders", "application/json", bytes.NewBuffer(requestBody))它给出了以下错误
拨号tcp 127.0.0.1:8000:连接:连接被拒绝
我是新来的码头,所以任何改进都欢迎!
发布于 2020-09-13 18:22:18
扩展我的评论。客户端代码的网络地址将无法工作:
resp, err := http.Post("http://localhost:8000/orders", "application/json", bytes.NewBuffer(requestBody)) // broken因为它实际上是在自言自语(localhost指的是客户端停靠容器,而不是主机操作系统)。
为了测试目的,向主机操作系统公开这两个容器的最快方法如下:
docker run -it --rm -p 8000:8000 dockweb # server container
docker run -it --rm --net host dockcli # client container除了琐碎的测试之外,这很快就会变得难以处理。因此,我建议使用像码头工这样的东西,它允许您以琐碎的方式链接容器及其网络。
发布于 2022-04-07 13:06:58
尝试使用0.0.0.0而不是localhost。这将解决连接拒绝的错误。
https://stackoverflow.com/questions/63873817
复制相似问题