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
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
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
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. –