Django无法连接Redis Docker容器

yb3bgrhw  于 2023-10-15  发布在  Redis
关注(0)|答案(2)|浏览(161)

我花了很长时间尝试在使用Docker-Compose时将Django容器连接到Redis。经过几个小时的修改Docker和Django的配置文件,并尝试不同的方式来运行所有的东西,我终于发现Redis正在向主机广播。
这些是我每次尝试都会遇到的错误:

  • 错误111连接到0.0.0.0:6379。连接被拒绝。
  • 错误61连接到localhost:6379。连接被拒绝。
  • 错误111连接到127.0.0.1:6379。连接被拒绝。

最后,我把Redis的Django IP配置改成了Docker主机IP,它工作得很好。
有没有人知道一种方法来配置一切,让Django在内部Docker网络上而不是外部主机上查找Redis?
仅供参考-我是个菜鸟。

iyr7buue

iyr7buue1#

主机名就是运行Redis的容器的名称。例如,如果你的docker-compose包含这样的内容:

cache:
    image: redis:3.2.6

然后,您需要设置配置以连接到cache:6379

vngu2lb8

vngu2lb82#

只是添加到下面的答案,使用Docker compose时可能的问题是直接引用localhost。我们必须使用服务名称。
所以如果你在docker compose中使用redis,就像这样:

cache:
  image: redis:7-alpine

然后在settings.py中,像这样引用该服务:

CACHES = {
        "default": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://cache:6379/1", # Note the cache
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
            },
        }
    }

相关问题