Python Docker上的Redis:连接到0.0.0.0:6379时出现错误111。拒绝连接
Python和Redis在我的本地应用程序中配合得很好。我试图把这个项目归档 当我编写docker时,redis容器工作正常Python Docker上的Redis:连接到0.0.0.0:6379时出现错误111。拒绝连接,python,django,docker,redis,Python,Django,Docker,Redis,Python和Redis在我的本地应用程序中配合得很好。我试图把这个项目归档 当我编写docker时,redis容器工作正常 > Server initialized > Ready to accept connections 但是,当我在POSTMAN中调用请求时,会出现以下错误: Error 111 connecting to 0.0.0.0:6379. Connection refused. 我的设置: CACHES = { "default":
> Server initialized
> Ready to accept connections
但是,当我在POSTMAN中调用请求时,会出现以下错误:
Error 111 connecting to 0.0.0.0:6379. Connection refused.
我的设置:
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://0.0.0.0:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}
My docker-compose.yml:
redis:
image: bitnami/redis:latest
volumes:
- ./redis.conf:/usr/local/etc/redis/redis.conf
environment:
- ALLOW_EMPTY_PASSWORD=yes
ports:
- "6379:6379"
…并在Dockerfile中:
ENV REDIS_URL=redis://0.0.0.0:6379/1
我缺少什么?您使用
bitnami/redis:latest
进行redis设置,因此您肯定在docker compose.yaml
中有另一个服务来定义django应用程序,然后链接到该redis
容器
问题就在这里,您可以使用redis://0.0.0.0:6379/1
要从django
容器连接到redis
容器,这是不正确的
事实上,如果您没有在compose文件中定义任何自定义网络,则所有容器都将位于默认网络中,这意味着您的django
容器可以使用服务名称直接访问您的redis
容器
总之,你应该改变
redis://0.0.0.0:6379/1
到
你可能想找一找
另外,当您公开
6379
时,将0.0.0
更改为docker主机的ip可能是另一种选择。谢谢,所以您说从docker文件中删除ENV并在我的设置中更改缓存变量?在缓存中使用ENV
或变量取决于您自己的逻辑,关键项是0.0.0.0
不正确,您可以尝试将两者都更改为redis
查看。使其工作后,您可以在缓存中找到哪个更适合您,ENV
或变量。谢谢,它工作了。我还想补充一点:在我的redis.conf中,我注释掉了#bind 127.0.0.1-::1。和保护模式编号。
redis://redis:6379/1