Docker中的Rabbitmq IP地址和Redis IP地址
在Docker之外,redis和rabbitmq的ip地址在我的django应用程序中的ubuntu 16.04环境中设置为'localhost'。 但是,我正在尝试将我的Web服务迁移到docker中。 我使用Docker的官方存储库redis和rabbitmq。
在我的Django settings.py
,我必须声明redis和rabbitmq的IP地址,以便在我的应用程序中连接到它们。 我没有任何线索如何确定他们在Docker内的IP地址。 在docker-compose.yml中,configuration如下:
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应用程序依赖于 rabbit
和redis
。 这将确保在web
之前启动rabbit
和redis
。 根据你的错误,RabbitMQ在networking启动时可能没有完全启动。
depends_on: - rabbit - redis