【发布时间】:2017-10-13 14:54:47
【问题描述】:
在 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 设置为 'localhost' 时,会发生错误
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
【问题讨论】: