python - Docker 上的 Redis : Error 111 connecting to 0. 0.0.0 :6379. 连接被拒绝

标签 python django docker redis

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/1django 连接到 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/

相关文章:

python - Reportlab,相关文件链接

python - 如何将一个字段显示为序列化器中的字符串?

docker - Jenkins 代理无法运行程序 "docker": error=2, 没有这样的文件或目录

mongodb - 启动项目+Docker compose时遇到错误

Python Xarray,按索引或维度排序?

python - 使用 Python 从 Blob 存储下载 Blob

python - 使用 NLTK 在不完整的句子中查找主题

python - django-oscar 中的用户货到付款

python - django 中的 initial_data fixture 管理

wordpress - 处理Dockerfile以构建WordPress镜像