You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Docker-Compose时Django容器无法连接Redis容器的问题排查

解决Docker Compose中Django容器无法连接Redis容器的问题

我完全懂你折腾好几个小时却卡在连接问题上的崩溃感!之前帮朋友排查过几乎一模一样的情况,咱们先把问题根源和解决办法理清楚:

为啥会出现那些连接拒绝的报错?

在Docker Compose创建的专属网络里,每个容器都是独立的网络节点。你在Django配置里写的localhost、127.0.0.1或者0.0.0.0,其实都是指向Django容器自己,而不是Redis容器。Redis容器只会在Compose的内部网络里广播服务,根本不会绑定到主机的localhost,所以自然连不上。

具体解决步骤

  • 第一步:确认Docker Compose里的Redis服务名
    先检查你的docker-compose.yml,确保Redis服务有明确的名称(比如下面示例里的redis),同时Django服务要依赖这个Redis服务:

    services:
      redis:
        image: redis:latest
        ports:
          - "6379:6379"
      django:
        build: .
        command: python manage.py runserver 0.0.0.0:8000
        depends_on:
          - redis
        ports:
          - "8000:8000"
    
  • 第二步:修改Django的Redis连接配置
    把Django配置里(比如settings.py)原来的localhost/127.0.0.1,直接换成Docker Compose里Redis的服务名(也就是上面的redis)。举个例子:

    # 缓存配置
    CACHES = {
        "default": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://redis:6379/1",  # 这里用服务名代替localhost
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
            }
        }
    }
    
    # 如果用了Celery,也要同步修改
    CELERY_BROKER_URL = "redis://redis:6379/0"
    CELERY_RESULT_BACKEND = "redis://redis:6379/0"
    
  • 第三步:重启服务生效
    执行以下命令重启你的Docker Compose服务,确保配置生效:

    docker-compose down && docker-compose up --build
    

补充说明

Docker Compose会自动为同一配置下的容器创建内部网络,并且支持通过服务名直接访问其他容器,就像用域名访问一样。之前你一直指向localhost,相当于让Django容器自己去连自己的6379端口,那肯定会被拒绝呀!

内容的提问来源于stack exchange,提问作者ThatCampbellKid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:17:45