You need to enable JavaScript to run this app. Docker环境下自定义服务连接容器化RabbitMQ失败求助
优惠活动
大模型
产品
解决方案
定价
更多

Docker环境下自定义服务连接容器化RabbitMQ失败求助

问题根因排查

1. 网络隔离问题

你当前配置中my_app显式加入了自定义sandbox网络,但rabbitmq服务未配置任何网络,默认会加入Docker Compose自动生成的项目默认网络,两个服务不在同一网络下,无法通过rabbitmq主机名互相通信,这是最核心的报错原因。

2. 服务启动时序问题

depends_on仅控制容器的启动顺序,不保证RabbitMQ服务内部完全初始化完成、对外开放5672端口后再启动my_app,RabbitMQ启动过程通常需要3-10秒,提前启动的应用会直接连接失败。

3. 默认用户访问限制

RabbitMQ 3.3及以上版本默认限制guest用户仅能通过localhost访问,跨容器访问默认会被拒绝。


修复方案

第一步:修正docker-compose.yaml配置

version: "3.9"
services:
    rabbitmq:
        hostname: "rabbitmq"
        image: "rabbitmq:3-management"
        container_name: "rabbitmq"
        ports: 
            - "5672:5672"
            - "15672:15672"
        stdin_open: true
        tty: true
        # 新增:和my_app加入同一网络
        networks:
            - sandbox
        # 新增:健康检查,确认RabbitMQ完全就绪
        healthcheck:
          test: ["CMD", "rabbitmqctl", "status"]
          interval: 5s
          timeout: 10s
          retries: 5
        # 新增:放开guest用户跨主机访问限制
        environment:
          RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS: '-rabbit loopback_users "none"'
    my_app:
        image: 'my-app'
        container_name: 'my-app'
        build: ./my_app
        ports: 
            - "8000:8000"
        volumes:
            - ./my_app:/src
        command: python manage.py runserver 0.0.0.0:8000
        env_file: ./common.env
        stdin_open: true
        tty: true
        # 修改:等待rabbitmq健康检查通过再启动
        depends_on: 
            rabbitmq:
              condition: service_healthy
        networks:
            - sandbox
networks:
    sandbox:
        name: sandbox_network

第二步:可选校验

修复后如果仍有问题,可以进入my_app容器执行以下命令校验连通性:

  • 执行ping rabbitmq,确认能正常解析到RabbitMQ容器IP
  • 执行nc -zv rabbitmq 5672,确认5672端口可正常访问

额外说明

你当前代码中声明的队列名为croudie_creation,但发送消息时指定的路由键是hello,默认直连交换机会匹配和路由键同名的队列,这会导致消息无法路由到你声明的队列,连接问题修复后可以同步调整路由键为croudie_creation即可正常消费。


内容的提问来源于stack exchange,提问作者zigzagzoom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 00:15:08