我有一个用Go编写的Web服务器,该服务器与Rabbitmq和Mongodb交互。当我在没有容器(rabbitmq网址:amqp://guest:guest@localhost:5672
)的计算机上运行所有这些服务器时,它工作正常。
现在,我试图在单独的容器中运行所有这些服务。这是我的撰写文件
version: '3'
services:
rabbitmq:
image: rabbitmq
container_name: rabbitmq
ports:
- 5672:5672
mongodb:
image: mongo
container_name: mongodb
ports:
- 27017:27017
web:
build: .
image: palash2504/collect
container_name: collect-server
restart: on-failure
ports:
- 3000:3000
depends_on:
- rabbitmq
- mongodb
links: ["rabbitmq", "mongodb"]
networks:
default:
external:
name: collect-net
这是我的服务器dockerfile
FROM golang
ENV GO111MODULE=on
WORKDIR /app
COPY go.mod .
COPY go.sum .
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
EXPOSE 3000
ENTRYPOINT ["/app/social-cops-assignment"]
我的服务器似乎无法连接到Rabbitmq。这是我在运行docker compose up
且配置中的Rabbitmq URL为amqp://guest:guest@rabbitmq:5672
时收到的日志消息(由于容器名称为rabbitmq,因此我用rabbitmq替换了localhost,以便我的服务器能够找到Rabbitmq容器)
collect-server | 2019/03/10 08:50:51 Failed to connect to AMQP compatible broker at: amqp://guest:guest@rabbitmq:5672/, with errror: dial tcp 172.24.0.3:5672: connect: connection refused
但是rabbitmq似乎已经准备好接受连接。这是来自docker-compose up
rabbitmq | 2019-03-10 08:50:55.164 [info] <0.489.0> accepting AMQP connection <0.489.0> (172.24.0.4:49784 -> 172.24.0.3:5672)
rabbitmq | 2019-03-10 08:50:55.205 [info] <0.489.0> connection <0.489.0> (172.24.0.4:49784 -> 172.24.0.3:5672): user 'guest' authenticated and granted access to vhost '/'
我是docker-networking的新手,我不知道自己在做什么错?是我正在使用的Rabbitmq地址,还是我需要对Rabbitmq进行一些其他配置或公开一些端口?
答案 0 :(得分:1)
定位服务时,请勿附加端口。使用rabbitmq
,而不是rabbitmq:5672
。
我已经在您的问题{@ {3}}
中回答了此问题所有docker网络配置(在上述修复之后)似乎都不错。其余错误可能是由于与您的源代码和/或身份验证数据/设置有关的身份验证问题造成的。