同一网络上的容器彼此不通信

我有一个名为 e-learning 的 mongodb 容器,我有一个应该连接到 mongodb 容器以更新我的数据库的 docker 图像,但它不起作用 我收到此错误:

未知,最后一个错误:连接握手期间发生连接()错误:拨打 tcp 127.0.0.1:27017:连接:连接被拒绝}


这是我的 docker 构建文件


# syntax=docker/dockerfile:1 

FROM golang:1.18 

WORKDIR /go/src/github.com/worker 

COPY go.mod go.sum main.go  ./ 

RUN go mod download 

RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app . 

FROM jrottenberg/ffmpeg:4-alpine   


FROM alpine:latest 

RUN apk --no-cache add ca-certificates 

WORKDIR /root/ 

ENV LD_LIBRARY_PATH=/usr/local/lib 

COPY --from=jrottenberg/ffmpeg / / 

COPY app.env /root 

COPY --from=0 /go/src/github.com/worker/app . 

CMD ["./app"] 

我的码头工人撰写文件


version: "3.9"


services:

  worker:

    image: worker

    environment:

     - MONGO_URI="mongodb://localhost:27017/"

     - MONGO_DATABASE=e-learning 

     - RABBITMQ_URI=amqp://user:password@rabbitmq:5672/

     - RABBITMQ_QUEUE=upload

    networks:

     - app_network

    external_links:

     - e-learning

     - rabbitmq

    volumes:

      - worker:/go/src/github.com/worker:rw


networks:

 app_network:

  external: true

volumes:

  worker:


慕姐4208626
浏览 101回答 2
2回答

烙印99

我添加了额外的主机并将我的 mongo uri 更改为host.docker.internal 它解决了我的问题version: "3.9"services:  worker:    image: worker    environment:     - MONGO_URI="mongodb://host.docker.internal:27017/"     - MONGO_DATABASE=e-learning      - RABBITMQ_URI=amqp://user:password@rabbitmq:5672/     - RABBITMQ_QUEUE=upload    networks:     - app_network    external_links:     - e-learning     - rabbitmq    volumes:      - worker:/go/src/github.com/worker:rw    extra_hosts:      - "host.docker.internal:host-gateway"networks: app_network:  external: truevolumes:  worker:

大话西游666

更改MONGO_URI="mongodb://localhost:27017/"为MONGO_URI="mongodb://e-learning:27017/"(假设e-learning是 mongo 容器)。在连接到桥接网络(默认)的容器中,localhost (127.0.0.1) 是容器本身。因此,您的应用程序容器正在尝试通过27017自身端口访问数据库(而不是在主机或数据库容器上)。最简单的解决方案是使用docker 提供的容器之间的自动 DNS 解析。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go