无法连接RabbitMQ,出现节点Docker提取错误,错误:未找到兔子mq

prdp8dxp  于 2022-11-23  发布在  RabbitMQ
关注(0)|答案(1)|浏览(111)

当我连接到节点js中的RabbitMQ服务器时,我获取了这个错误。这是一个微服务应用程序。我现在有两个服务1.users 2.posts
RabbitMQ服务器正在运行,我可以使用localhost查看:15672
但不知何故,我的节点服务器无法与rabbitmq连接。
我在下面附上了docker-compose.yml和Dockerfile。

mongo_db_1  | {"t":{"$date":"2022-08-20T09:17:49.025+00:00"},"s":"I",  "c":"NETWORK",  "id":51800,   "ctx":"conn4","msg":"client metadata","attr":{"remote":"172.29.0.4:50454","client":"conn4","doc":{"driver":{"name":"nodejs|Mongoose","version":"4.8.1"},"os":{"type":"Linux","name":"linux","architecture":"x64","version":"5.10.104-linuxkit"},"platform":"Node.js v18.7.0, LE (unified)","version":"4.8.1|6.5.1"}}}
users_1     | node:internal/process/promises:288
users_1     |             triggerUncaughtException(err, true /* fromPromise */);
users_1     |             ^
users_1     | 
users_1     | Error: getaddrinfo ENOTFOUND rabbitmq
users_1     |     at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:111:26) {
users_1     |   errno: -3008,
users_1     |   code: 'ENOTFOUND',
users_1     |   syscall: 'getaddrinfo',
users_1     |   hostname: 'rabbitmq'
users_1     | }
users_1     | 
users_1     | Node.js v18.7.0
mongo_db_1  | {"t":{"$date":"2022-08-20T09:17:49.041+00:00"},"s":"I",  "c":"NETWORK",  "id":22944,   "ctx":"conn3","msg":"Connection ended","attr":{"remote":"172.29.0.4:50452","uuid":"f20dc375-8f2d-4501-97bd-8b81616e64e0","connectionId":3,"connectionCount":3}}
mongo_db_1  | {"t":{"$date":"2022-08-20T09:17:49.041+00:00"},"s":"I",  "c":"NETWORK",  "id":22944,   "ctx":"conn4","msg":"Connection ended","attr":{"remote":"172.29.0.4:50454","uuid":"f9c5daa3-dd2d-4862-95f2-1e0f7710cd8d","connectionId":4,"connectionCount":2}}
users_1     | [nodemon] app crashed - waiting for file changes before starting...

POSRS服务停靠文件

FROM node:alpine
    WORKDIR /posts/src/app
    COPY package*.json .
    RUN npm ci
    COPY . .
    CMD ["npm", "run","start"]

POSRS服务停靠文件

FROM node:alpine
WORKDIR /users/src/app
COPY package*.json .[enter image description here][1]
RUN npm ci
COPY . .
CMD ["npm", "run","start"]

docker-compose.yml文件

version: "3.9"

services:
  #MongoDB services
  mongo_db:
    image: mongo:latest
    restart: always
    ports:
      - 2717:27017
    volumes:
      - mongo_db:/data/db

  #Rabbitmq services
  rabbitmq:
    image: rabbitmq:3.8-management-alpine
    restart: always
    ports:
      # AMQP protocol port
      - "5672:5672"
      # HTTP management UI
      - "15672:15672"
    networks:
      - rabbitmq_nodejs
  #Node users API service
  users:
    build:
      context: ./users
      dockerfile: Dockerfile
    restart: always
    ports:
      - 8000:8000
    volumes:
      - ./users:/users/src/app/
    environment:
      APP_SECRET: "barkat"
      MONGODB_URI: "mongodb://mongo_db:27017/users"
      PORT: 8000
      MOJO_API_KEY: "test-39c833cd-adc0-4787-8027-400b8551d49f"
      MESSAGE_BROKER_URL: "amqp://rabbitmq"
    depends_on:
      - mongo_db
      - rabbitmq

  #Node posts API service
  posts:
    build:
      context: ./posts
      dockerfile: Dockerfile
    restart: always
    ports:
      - 8001:8001
    volumes:
      - ./posts:/posts/src/app/
    environment:
      APP_SECRET: "barkat"
      MONGODB_URI: "mongodb://mongo_db:27017/posts"
      PORT: 8001
      MOJO_API_KEY: "test-39c833cd-adc0-4787-8027-400b8551d49f"
      MESSAGE_BROKER_URL: "amqp://rabbitmq"
    depends_on:
      - mongo_db
      - rabbitmq

volumes:
  mongo_db: {}

networks:
  rabbitmq_nodejs:
    driver: bridge
hlswsv35

hlswsv351#

RabbitMQ代理位于其自己的Docker网络上,但没有其他网络。
删除文件中的两个networks:块,一个在顶层,另一个在rabbitmq服务下。Compose为您创建一个名为default的网络,并将容器附加到该网络,但前提是没有手动声明它们自己的networks:。如果删除networks:块,那么每个容器都将连接到default网络,并在容器网络将正常工作。
Docker文档中的Networking in Compose进一步描述了此设置。

相关问题