当前位置: 首页 > 知识库问答 >
问题:

RabbitMq在docker中运行时拒绝连接

崔博延
2023-03-14

我的docker撰写文件如下所示:

version: '2'

services:
  explore:
    image: explore
    build:
      context: ./Explore
      dockerfile: VsDockerfile
    environment:
      - "ElasticUrl=http://localhost:9200"
      - "RabbitMq/Host=localhost"
      - "RabbitMq/Username=guest"
      - "RabbitMq/Password=guest"
    networks:
      - localnet

  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:5.4.3
    container_name: elasticsearch
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ports:
      - 9200:9200
    volumes:
      - ./esdata:/usr/share/elasticsearch/data
    networks:
      - localnet

  rabbit:
    image: rabbitmq:3.6.7-management
    hostname: rabbit
    ports:
      - 15672:15672
      - 5672:5672
    networks:
      - localnet

networks:
  localnet:
    external:
      name: localnet

如果我在浏览器中键入http://localhost:15672,我将获得Rabbitmq界面,但是如果我试图像这样从我的探索项目连接:

public SqlToRabbitProcessor(SqlToRabbitRepository sqlToRabbitRepository)
{
    _sqlToRabbitRepository = sqlToRabbitRepository;

    var factory = new ConnectionFactory
    {
        HostName = Environment.GetEnvironmentVariable("RabbitMq/Host"),
        UserName = Environment.GetEnvironmentVariable("RabbitMq/Username"),
        Password = Environment.GetEnvironmentVariable("RabbitMq/Password")
    };

    var rabbit = factory.CreateConnection();
    channel = rabbit.CreateModel();
}

然后它在队伍中断了

var rabbit = factory.CreateConnection();

错误是说

ExtendedSocketException:连接被拒绝127.0。0.1:5672html" target="_blank">系统。网插座。插座EndConnect(IAsyncResult异步结果)

ConnectFailureException:连接失败RabbitMQ。客户最终解决了紧张局势。SelectOne(IEndpointResolver解析器、Func选择器)

BrokerRunReachableException:指定的终结点都无法访问RabbitMQ。客户连接工厂。CreateConnection(IEndpointResolver endpointResolver,字符串clientProvidedName)

共有3个答案

束雅达
2023-03-14

按照这篇文章的说明去做。

只是为了让偶然发现这个问题的人受益。--link功能现在被认为是遗留的,是docker不推荐的主要候选功能。最简单的方法是用

depends_on:为了做到这一点,建议首先创建一个这样的网络”

docker network create <network_name>

然后使用docker compose up生成相互绑定的服务。看看下面的例子,我将我的spring boot应用程序绑定到rabbit mq。你可以从这里克隆我的回购协议

version: "3.1"
services:
  rabbitmq-container:
    image: rabbitmq:3.5.3-management
    hostname: rabbitmq-container
    ports:
      - 5673:5673
      - 5672:5672
      - 15672:15672
    networks:
      - resolute

  resolute-container:
    build: .
    ports:
      - 8080:8080
    environment:
      - spring_rabbitmq_host=rabbitmq-container
      - spring_rabbitmq_port=5672
      - spring_rabbitmq_username=guest
      - spring_rabbitmq_password=guest
      - resolute_rabbitmq_publishQueueName=resolute-run-request
      - resolute_rabbitmq_exchange=resolute
    depends_on:
      - rabbitmq-container
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      - resolute

networks:
  resolute:
    external:
      name: resolute
司寇季
2023-03-14

我和docker compose也有同样的问题。

我用主机名解决了这个问题:

  rabbit:
    hostname: rabbit
    command: sh -c "rabbitmq-plugins enable rabbitmq_management; rabbitmq-server"
    image: rabbitmq
    environment:
      RABBITMQ_DEFAULT_USER: admin
      RABBITMQ_DEFAULT_PASS: admin
    ports:
        - 5672:5672
        - 15672:15672
融焕
2023-03-14

正如我在问题下的评论所指出的,这是因为web应用程序部分中定义的“localhost”是容器localhost,而不是docker主机。。

只是需要改变

- "ElasticUrl=http://localhost:9200"
- "RabbitMq/Host=localhost"

- "ElasticUrl=http://elasticsearch:9200"
- "RabbitMq/Host=rabbit"
 类似资料:
  • 我是码头工人的新宝宝。我正在Spring Boot应用程序中使用docker。下面是我的档案。 application.properties文件: 问题的第一部分解决了:当我运行应用程序时,我得到以下错误: 1)我想要达到的- 希望为我的应用程序创建一个jar。 创建jar后,我要从jar创建映像 创建应用程序的映像后,我想推入docker集线器。 从其他服务器运行docker-compose.y

  • 我无法连接到RabbitMQ。RabbitMQ不在本地计算机上。 我的应用程序.属性看起来像 我可以使用https://urltologinscreen:15671访问Rabbitmq gui 我得到以下错误 如何解决问题?

  • 我有一个泊坞群设置,其中包含在覆盖网络中注册的服务。服务之间的通信工作正常,但是我从连接到外部数据库的一个服务中得到了“连接被拒绝”。该服务是基于 Java 的应用程序(Spring启动)。 < li >连接是用其IP(JDBC:MySQL://192 . 168 . 130 . 141:3306/database?auto connect = true) < li >我已经检查过我可以从容器pi

  • 试图在localhost中建立从app容器到mysql容器的连接,出现连接拒绝异常 我们正在采取一种docker的方法来调用rest api服务来采用微服务的方法。我们正在建立应用程序容器和mysql容器之间的连接,同时我们编写了一个docker-compose文件,创建了mysql容器和应用程序容器,为这两个容器公开了端口。下面是运行docker-compose文件docker-compose

  • 我已经确认Alpine/Socat正在http://127.0.0.1:2376上运行/可能是守护进程未连接的问题,请提供帮助。使用OSX的TIA 连接被拒绝:/127.0.0.1:2376 java.net.connectException:连接被拒绝导致:io.netty.channel.abstractChannel$annotatedConnectException:连接被拒绝:/127.

  • 问题内容: 我正在尝试在Macbook中运行Jenkins管道作业。我也有本地运行的docker实例。最初,我在运行Jenkins Job时遇到“ 找不到docker命令 ”错误。我通过添加符号链接“ ln -f -s /Applications/Docker.app/Contents/Resources/bin/* / usr / local / bin ” 解决了该错误 我还应用了这两个更改,