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

Docker Compose部署Django+ChromaDB连接失败求助

解决Django容器无法连接ChromaDB的问题

核心问题:容器间通信不能使用localhost

在Docker Compose的默认网络环境中,每个容器的localhost指向自身容器,而非宿主机或其他容器。你当前的Django代码中使用localhost:8989尝试连接ChromaDB,实际上是在Django容器内部查找8989端口,自然会出现连接拒绝的错误。

正确的做法是使用Docker Compose中定义的服务名称作为主机地址,你在docker-compose.yml中给ChromaDB定义的服务名是chroma,直接用这个名称即可完成容器间通信。

修改后的Django连接代码

from rest_framework.decorators import api_view
from rest_framework.response import Response
import chromadb
from chromadb.config import Settings

# 将host改为服务名"chroma"
chroma_client = chromadb.HttpClient(
    host='chroma',
    port=8989,
    settings=Settings(allow_reset=True, anonymized_telemetry=False))


@api_view(['GET'])
def index(request):
    sample_collection = chroma_client.get_or_create_collection(name="sample_collection")
    print(sample_collection)
    return Response({
        'info': 'Hello world.'
    })

额外验证步骤

  • 确认ChromaDB服务就绪:执行docker logs chroma查看容器日志,确认ChromaDB已完成启动并正常监听8989端口。
  • 检查Docker网络配置:Docker Compose默认会为所有服务创建共享网络,无需额外配置,服务名可直接解析为对应容器的IP地址,容器间通信无需依赖宿主机的端口映射。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 17:55:29