Python Docker上的Redis:连接到0.0.0.0:6379时出现错误111。拒绝连接

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":

Python和Redis在我的本地应用程序中配合得很好。我试图把这个项目归档

当我编写docker时,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",
        }
    }
}
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