2017-10-13 2 views
0

Außerhalb Docker, ist die IP-Adresse von Redis und Rabbitmq als 'Localhost' in meiner Django-App in Ubuntu 16.04 Umgebung eingestellt. Ich versuche jedoch, meinen Webdienst in Docker zu migrieren. Ich benutze Docker's offizielles Repository redis und rabbitmq.Rabbitmq IP-Adresse und Redis IP-Adresse in Docker

In meinem Django muss ich die IP-Adressen von redis und rabbitmq angeben, um mit ihnen in meiner App zu verbinden. Ich habe keine Ahnung, wie ich ihre IP-Adresse in Docker ermitteln kann. In Docker-compose.yml wird die Konfiguration unten angegeben:

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"] 

Wenn ich versuche, ihre ip gesetzt als 'localhost', Fehler

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 

Antwort

0

In Ihrem tritt docker-compose.yml Sie haben my-rabbit als Hostnamen , aber in Ihrem links Abschnitt haben Sie rabbit. Diese müssen übereinstimmen.

Versuchen Sie, Ihren RabbitMQ-Hostnamen in rabbit zu ändern.

Auch für Ihren Dienst web sollten Sie angeben, dass diese Webanwendung depends onrabbit und redis. Dadurch wird sichergestellt, dass rabbit und redis vor web gestartet werden. Aufgrund Ihres Fehlers wurde RabbitMQ beim Start des Webs möglicherweise nicht vollständig gestartet.

depends_on: 
    - rabbit 
    - redis 
+0

Ich habe versucht und es funktioniert immer noch nicht. In weiteren Untersuchungen, ich noch Healthcheck: Test: ["CMD", "Curl", "-f", "http://172.17.0.3:15672"] Intervall: 30s Timeout: 10s Wiederholungen: 5 in meinem docker-compose.yml. Irgendeine Idee? –

+0

Alberne Frage, aber führen Sie 'docker-compose down' aus, bevor Sie Änderungen an' docker-compose.yml' vornehmen? – grizzthedj

+0

Ich 'ctrl + c' eigentlich zu beenden' docker-compose up' und führen 'docker-compose build' nach der Bearbeitung der' docker-compose.yml'. Ist das richtig? –

Verwandte Themen