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

Windows 10 Docker Desktop部署Django/Postgres遇套接字网络错误求助

解决方案

一、解决Docker Desktop的OTEL遥测错误

这个错误是Docker Desktop自身遥测服务连接失败导致的,和你的Django项目无关,可通过以下方式解决:

  • 关闭遥测功能
    打开Docker Desktop,进入「设置」>「隐私与安全」,取消勾选「向Docker发送使用统计数据」和「向Docker发送诊断数据」,重启Docker Desktop。

  • 修改配置文件禁用OTEL
    在C:\Users\<你的用户名>\.docker\目录下创建或编辑daemon.json文件,添加以下内容:

    {
      "metrics-addr": "0.0.0.0:0",
      "experimental": false
    }
    

    保存后重启Docker Desktop,即可阻止OTEL相关的连接尝试。

二、解决Django与Postgres的「Connection refused」错误

结合你的docker-compose.yml和项目配置,以下是关键修正点:

1. 修正端口映射不匹配问题

你的Web服务中,Django运行在容器内的8000端口,但端口映射写的是8080:8080,导致端口不匹配引发连接问题。修改Web服务的端口映射:

web:
  # ... 其他配置不变
  ports:
    - "8080:8000"  # 外部8080端口映射到容器内8000端口

2. 确保Postgres服务就绪后启动Django

depends_on仅保证启动顺序,不确保Postgres完全就绪。给Postgres添加健康检查,并让Web服务等待其就绪:

db:
  # ... 其他配置不变
  healthcheck:
    test: ["CMD-SHELL", "pg_isready -U postgres -p 5434"]
    interval: 5s
    timeout: 5s
    retries: 5

web:
  # ... 其他配置不变
  depends_on:
    db:
      condition: service_healthy

3. 修正Django数据库配置

在项目的settings.py中,确保数据库配置与docker-compose.yml中的Postgres参数一致:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'dbName',
        'USER': 'postgres',
        'PASSWORD': 'pw',
        'HOST': 'db',  # 对应docker-compose中db服务的名称
        'PORT': '5434',  # 对应PGPORT环境变量设置的端口
    }
}

4. 验证Dockerfile配置

确保你的项目根目录下有正确的Dockerfile,示例如下:

FROM python:3.12-slim

WORKDIR /dcpProject

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

EXPOSE 8000

CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

完成以上修正后,执行docker-compose down清理旧容器,再重新运行docker-compose up即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 15:42:36