Rabbitmq IP 地址和 Docker 中的 Redis IP 地址



在 Docker 之外,Redis 和 Rabbitmq 的 IP 地址在 Ubuntu 16.04 环境中的 Django 应用程序中设置为"localhost"。但是,我正在尝试将我的 Web 服务迁移到 docker 中。我使用 Docker 的官方存储库 redis 和 rabbitmq。

在我的 Django settings.py 中,我必须声明 redis 和 rabbitmq 的 IP 地址,以便在我的应用程序中连接到它们。我不知道如何在 Docker 中确定他们的 IP 地址。在docker-compose.yml中,配置如下:

version: '2'
services:
  # RabbitMQ
  rabbit:
    hostname: my-rabbit
    image: rabbitmq:3
    ports:
      - "5672:5672"  # we forward this port because it's useful for 
debugging
      - "15672:15672"  # here, we can access rabbitmq management plugin
  #Redis
  redis:
    image: redis:latest
  #Data Processing WS
  web:
   build: .
   command: python manage.py runserver 0.0.0.0:9060 --noreload
    volumes:
      - .:/srv
   ports:
      - "9060:9060"
    links: ["rabbit", "redis"]

当我尝试将他们的 ip 设置为"本地主机"时,发生错误

settings.CONNECTION = pika.BlockingConnection(pika.ConnectionParameters(host=settings.RABBIT_MQ_
IP_ADDRESS, heartbeat_interval=0))
web_1     |   File "/usr/local/lib/python2.7/dist-
packages/pika/adapters/blocking_connection.py", line 339, in __init__
web_1     |     self._process_io_for_connection_setup()
web_1     |   File "/usr/local/lib/python2.7/dist-
packages/pika/adapters/blocking_connection.py", line 374, in 
_process_io_for_connection_setup
web_1     |     self._open_error_result.is_ready)
web_1     |   File "/usr/local/lib/python2.7/dist-
packages/pika/adapters/blocking_connection.py", line 395, in _flush_output
web_1     |     raise exceptions.ConnectionClosed()
web_1     | pika.exceptions.ConnectionClosed

在您的docker-compose.yml中,您将my-rabbit作为主机名,但在links部分中,您有rabbit .这些需要匹配。

尝试将您的 RabbitMQ 主机名更改为 rabbit

此外,对于web服务,应指定此 Web 应用依赖于 rabbitredis 。这将确保rabbitredisweb之前启动。根据您的错误,当 Web 启动时,RabbitMQ 可能尚未完全启动。

depends_on: 
  - rabbit
  - redis

最新更新