2016-10-29 1 views
1

Ich bin Docker mit Docker-Compose-up ausgeführt.Docker kann keine Verbindung zu Redis aus Datei herstellen

In einer Datei Ich habe die redis zuzugreifen versuchen mit:

import redis 

pool = redis.ConnectionPool(host='redis', port=6379, db=0) 
r = redis.Redis(connection_pool=pool) 
r.flushall() 

Hier ist mein Docker-compose.yml redis Teil:

web: 
    build: . 
    ports: 
    - "8000:8000" 
    links: 
    - db 
    - redis 
    environment: 
    - DATABASE_URL=postgres://user:[email protected]:5432/chat 
    - REDIS_URL=redis://redis:6379/1 
    volumes: 
    - .:/opt/app 
db: 
    image: praiskup/postgresql:APIv1.0.1-fedora23 
# volumes: 
# - ./db:/var/lib/pgsql/data 
    environment: 
    - POSTGRESQL_DATABASE=chat 
    - POSTGRESQL_USER=user 
    - POSTGRESQL_PASSWORD=openhouse2016 
    - POSTGRESQL_CONTAINER_OPTS=assert_external_data = false 
worker: 
    build: . 
    environment: 
    - DATABASE_URL=postgres://user:[email protected]:5432/chat 
    - REDIS_URL=redis://redis:6379/1 
    links: 
    - db 
    - redis 
    volumes: 
    - .:/opt/app 
    # we need to wait for database setup 
    command: bash -c "sleep 7 && exec python /opt/app/channels-example/manage.py runworker -v3" 
redis: 
    image: redis 
    ports: 
     - "6379:6379" 
migrator: 
    build: . 
    environment: 
    - DATABASE_URL=postgres://user:[email protected]:5432/chat 
    - REDIS_URL=redis://redis:6379/1 
    links: 
    - db 
    # it indeed takes this long to start the database 
    command: bash -c "sleep 5 && exec python /opt/app/channels-example/manage.py migrate" 

Nach dem Laufen:

docker-compose down 
docker-compose build 
docker-compose up 

Alles läuft gut und redis sagt, es ist bereit, Verbindungen an Port 6379 zu akzeptieren.

erzeugt jedoch der Python-Code oben:

redis.exceptions.ConnectionError: Error -5 connecting to redis:6379. No address associated with hostname. 

Wie schließe ich aus der Python-Datei Redis?

EDIT:

docker ps -a 

redis zeigt:

3a494c9da73d  redis  "docker-entrypoint.sh" 
10 seconds ago Up 9 seconds 0.0.0.0:6379->6379/tcp 
+0

Was passiert, wenn Sie ein Docker ps ausführen? Läuft alles am richtigen Port? Zeigt es die richtige Zuordnung? Können Sie den Service über die entsprechende URL und den Port von der Maschine aus erreichen, die Sie verwenden? – idjaw

+0

Ja, es scheint, als ob alles im richtigen Port ist. Hinzugefügt in Bearbeitung. Ich versuche jedoch über "redisse: 6379" eine Verbindung herzustellen, was inkorrekt sein kann. Wenn ich "0.0.0.0:6379" versuche, bekomme ich "ECONNREFUSED" -Fehler. – shell

+0

Sie können nicht auf einen Container mit einem Hostnamen ohne Änderungen an Ihrer Hostdatei zugreifen. Und 0.0.0.0 ist nicht die IP-Adresse des Containers. –

Antwort

1

Der Migrator nicht Redis hat verknüpfen. Dies hat es behoben:

migrator: 
    build: . 
    environment: 
    - DATABASE_URL=postgres://user:[email protected]:5432/chat 
    - REDIS_URL=redis://redis:6379/1 
    links: 
    - db 
    - redis #this line here was missing 
    # it indeed takes this long to start the database 
    command: bash -c "sleep 5 && exec python /opt/app/channels-example/manage.py migrate" 
Verwandte Themen