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

Django配合Docker Compose部署时无法连接localhost 5432端口PostgreSQL服务

解决Docker Compose下Django连接PostgreSQL报错方案

核心错误原因

你现在的配置有三处不匹配/错误,直接导致连接失败:

  1. Django配置中数据库主机写了localhost:Docker容器网络中,web容器的localhost指向自身,无法访问同网络下的db容器
  2. 数据库名称不匹配:Django配置的库名是fitshop,但PostgreSQL容器初始化时创建的默认库是postgres
  3. 数据库密码不匹配:Django配置的密码是fitpass,但PostgreSQL容器配置的默认密码是postgres

具体修复步骤

  • 第一步:统一数据库配置

    选择任意一套方案对齐配置即可,这里以修改Django配置为例:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'NAME': 'postgres', # 和docker-compose的POSTGRES_DB取值一致
            'USER': 'fitshopuser', # 和docker-compose的POSTGRES_USER取值一致
            'PASSWORD': 'postgres', # 和docker-compose的POSTGRES_PASSWORD取值一致
            'HOST': 'db', # 填Docker Compose中数据库服务的名称,自动通过内部DNS解析
            'PORT': '5432',
        }
    }
    

    如果你想保留自定义库名fitshop,就把docker-compose.yml中db的环境变量改成- POSTGRES_DB=fitshop即可。

  • 第二步:(可选)解决数据库启动时序问题

    depends_on仅保证容器启动顺序,不会等待PostgreSQL进程完全就绪,web启动过快仍会触发连接报错,最简单的处理方式是修改web的启动命令,增加等待时间:

    command: sh -c "sleep 5 && python manage.py runserver 0.0.0.0:8000"
    
  • 第三步:重启服务生效

    先清空旧的数据库挂载卷(避免旧初始化数据干扰,注意:会清空原有数据库数据,有需要请提前备份),再重新启动服务:

    docker-compose down -v
    docker-compose up --build
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:36:03