29👍
Try changing 127.0.0.1:6379
to redis:6379
.
Although Redis is running, your python
container isn’t able to communicate with it; this is because it’s trying to connect to 127.0.0.1:6379
, but from the container’s perspective, there’s nothing running there. This can be a bit frustrating to debug, but it’s a bit easier if you keep in mind that containers get their own network namespace. As a result, python
‘s localhost != redis
‘s localhost != your host machine’s localhost
.
Luckily, it’s easy to connect containers that are sharing the same bridge, and by default, docker-compose
creates a single bridge network and connects all your containers to them, providing the necessary DNS to allow them to discover one another. As a result, container-to-container communication works simply by using the service name.
As a note, it’s possible to run containers in the same namespace, and to run in them in the namespace of the host, via the --net=container:<container-id>
or --net=host
flag. This is especially useful for running debugging tools in a container and attaching them to the network namespace of either another container or the host, e.g. using netshoot to see what ports are listening within the container (exposed or not), docker run --rm -it --net container:test_web_1 nicolaka/netshoot netstat -tulpn
.
6👍
Try changing 127.0.0.1:6379 to redis:6379.
it works for me. Just some details
docker-compose.yml
...
redis:
image: redis:latest
ports:
- "6379:6379"
volumes:
- 'redisdata:/data'
....
CHANNEL_LAYERS = {
'default': {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
'CONFIG': {
"hosts": [('redis', 6379)],
},
},
}
- Django Rest Framework receive primary key value in POST and return model object as nested serializer
- Uwsgi: unrecognized option '–module=MyProject.wsgi:application'
- 'WSGIRequest' object has no attribute 'session' while upgrading from django 1.3 to 1.9
- Apache mod_wsgi error: Forbidden You don't have permission to access / on this server
- Django mysqlclient install
2👍
i have the same issue,
the problem was the version of my python and also of the channels.
the tutorial woks perfectly with python=3.6, channels-redis 2.3.1 and daphne 2.0.2, channels =2.0.
You can follow the channels documentation of the channels version you have install.
2👍
So I got stuck on this and none of the answers seemed to work for me.
I found that docker would give the container its own IP address. to find the IP address in the command line I used;
‘docker ps’ to get the container ID.
‘docker inspect -f ‘{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}} * container-id*’ which gave me the IP.
This worked for;
CHANNEL_LAYERS = {
'default': {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
'CONFIG': {
"hosts": [('172.20.0.1', 6379)],
},
},
}
- Changing password in Django Admin
- How to use full_clean() for data validation before saving in Django 1.5 gracefully?
0👍
I had a similar error with a Python FastAPI app running in a Docker container trying to connect to another container with http3.AsyncClient
which also uses asyncio
library.
One option which worked was to use IP of a container to which trying to connect. Get container id with docker ps
then get container’s IP with one of the options:
docker inspect -f "{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}" containerId
docker inspect -f "{{ .NetworkSettings.IPAddress }}" containerId
docker inspect containerId | grep IPAddress
The other was to run container on a host
network which lets a container share your host’s networking stack
docker run --network=host --name myContainer -p 8080:8080 -d myImageName
then 127.0.0.1
can be used for a host to connect to.
- Django Rest Framework Nested Serializers
- Django – Mixing ListView and CreateView
- Many to many and how to get a queryset from queryset
0👍
Whether install Redis on your container manually and set it up with Django or set up docker-compose to do that for you.
docker run -p 6379:6379 -d redis:latest
or
My docker-compose.yml file
version: "3.9"
services:
django:
build:
context: .
image: django-chatapp-image
container_name: django-chatapp
volumes:
- ./:/app
- /virtual-env
ports:
- 8000:8000
environment:
- SOME_KEY=SOME_VAL
depends_on:
- redis
redis:
image: redis:alpine
ports:
- "6379:6379"
volumes:
- ./redisdata:/data
When you set up a service for redis the name of your service will be your host.
CHANNEL_LAYERS = {
'default': {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
'CONFIG': {
"hosts": [('redis', 6379)],
},
},
}
- Overwriting a block within an `include`d template from an extended template
- How to construct django Q object matching none
- How show personalized error with get_object_or_404
0👍
Okay, my search query was ConnectionRefusedError: [Errno 111] Connect call failed (‘127.0.0.1’, 5432) and google took me here. So, if anyone is looking for that issue, assuming,
- You are trying to run your dockerised app
- You know it is properly configured with postgress docker container
- In your localhost
try,
docker run --network="host" container_id_or_name
- Django render_to_string() ignores {% csrf_token %}
- Invalid HTTP_HOST header: The domain name provided is not valid — requests to dockerized django app using container name
- Protocol error, got "H" as reply type byte
- How to find out the summarized text of a given URL in python / Django?
- Pass JSON to JS using Django render
0👍
Follow the Tutorial:
docker run -p 6379:6379 -d redis:5
before and then:
python3 manage.py runserver
If you restart your system you need to run docker run -p 6379:6379 -d redis:5 again before python3 manage.py runserver