【问题标题】:Connecting to RabbitMQ container from containerized app从容器化应用程序连接到 RabbitMQ 容器
【发布时间】:2021-12-16 22:01:38
【问题描述】:

我正在尝试通过我的应用程序连接到 rabbitmq,两者都通过 docker-compose 在容器上运行。这是来自 docker-compose.yml 的相关代码

  rabbitmq:
    image: rabbitmq:3-management
    container_name: rabbitmq
    hostname: rabbitmq
    ports:
      - 15672:15672
      - 5672:5672
    environment:
      - RABBITMQ_DEFAULT_USER=guest
      - RABBITMQ_DEFAULT_PASS=guest
    networks: 
      - mynetwork

    {service}:
        container_name: {app}-container
        image: {image}
        ports:
          - 5030:80
          
        build:
          context: .
          dockerfile: {path}
        environment:
                - ASPNETCORE_ENVIRONMENT=Development
        networks:  
          - mynetwork

这就是我配置rabbitmq的方式:

_factory.HostName="rabbitmq";
_factory.User="user";
_factory.Password="password";
_factory.Port=5672;

它不起作用...我收到此错误:RabbitMQ.Client.Exceptions.BrokerUnreachableException: None of the specified endpoints were reachable 如果我在本地运行我的应用程序的容器并使用 127.0.0.1 连接到容器化 rabbitmq,它将起作用。感谢任何帮助!

【问题讨论】:

  • 你是从本地系统还是 docker 容器运行它?该异常来自哪里
  • @BatuhanAtalay 他们都在 docker 容器上运行。
  • 如果你附加到你的应用程序容器,你能ping等rabbitmq吗?

标签: c# docker asp.net-core rabbitmq


【解决方案1】:

如果您的两个容器在同一个组中(下图中的示例), 您可以使用其名称连接到它(即在此示例中为 https://tyk-pro-docker-demo-tyk-pump-1

在容器内使用127.0.0.1 将引用容器本身。一种解决方法是使用host.docker.internal 和使用暴露端口号的端口号。

这是出于开发目的,不适用于 Docker Desktop for Windows 之外的生产环境 from docker docs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-06
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-11
    相关资源
    最近更新 更多