【问题标题】:RabbitMQ container not reachable in Azure Web App for Containers在 Azure Web App for Containers 中无法访问 RabbitMQ 容器
【发布时间】:2019-01-20 08:19:41
【问题描述】:

我有以下 docker-compose 内容:

version: '3.4'

services:
  reporting.service:
    image: xxx.azurecr.io/beta/reporting.service
    environment:
      - ASPNETCORE_ENVIRONMENT=Docker
    ports:
      - "5003:80" 

  messaging.bus:
    image: rabbitmq:3-management
    environment:
      - RABBITMQ_DEFAULT_USER=user
      - RABBITMQ_DEFAULT_PASS=user
      - RABBITMQ_DEFAULT_VHOST=test
    links:
      - reporting.service
    ports:
      - "15672"
      - "5672"

  web.frontend:
    image: xxx.azurecr.io/beta/web.frontend
    ports:
      - "3000:80"

当使用 docker 在我的机器上本地运行时,一切正常,我的 reporting.service 能够毫无问题地连接到 messinging.bus (RabbitMQ)。

连接字符串如下所示:

"EventBus": {
    "ConnectionString": "amqp://user:user@messaging.bus:5672/test"
  },

当我将图像推送到 Azure 容器注册表并尝试在 Azure Web 应用程序中将其用于容器时,reporting.service 容器中会引发以下异常:

RabbitMQ.Client.Exceptions.BrokerUnreachableException: 没有 指定的端点是可达的---> System.AggregateException: One 或更多错误发生。 (连接失败)---> RabbitMQ.Client.Exceptions.ConnectFailureException:连接失败 ---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException: 没有这样的设备或地址

仅供参考,我在连接到 RabbitMQ 时在 reporting.service 中实施了 Polly 重试策略,以便在代理不可用的情况下多次执行代码。确保 RabbitMQ 容器已启动并运行(我也确认了查看日志)。

我做错了什么?为什么我无法从其他容器中看到 rabbitMq 实例?

感谢您的帮助!

【问题讨论】:

  • 你解决了这个问题吗!我有同样的问题

标签: docker docker-compose rabbitmq containers azure-web-app-service


【解决方案1】:

我在 Azure App Services 上遇到过类似的问题,我解决它的方法是使用 links 关键字。正如我从您的 docker-compose 中看到的那样,您以错误的方式链接它。之所以在本地工作,是因为容器在同一个本地网络中。

您是否尝试将 reporting.service 链接到 messaging.bus

还可以查看此答案here、docker 官方文档here 和 docker compose 在 Azure 上支持的命令here

我还发现了一篇有趣的文章here,它说如何制作两个相互依赖的容器。

我希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-26
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多