Python 和 Redis 在我的本地运行良好。我尝试将项目 Docker 化。
当我docker-compose up时,redis 容器工作正常。
> 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",
}
}
}
我的 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
至
redis://redis:6379/1
您可能想查看Networing in Compose
此外,由于您公开 6379
,因此将 0.0.0.0
更改为您的 Docker 主机的 IP 可能是另一种选择。
关于python - Docker 上的 Redis : Error 111 connecting to 0. 0.0.0 :6379. 连接被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66448777/