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

如何连接Docker容器中的PostgreSQL数据库?本地部署连接失败求助

问题描述

本地搭建了Django和PostgreSQL容器,服务器与数据库容器均正常运行,但无法连接PostgreSQL数据库。

docker-compose.yml 配置

version: '3'

services:
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/app
    ports:
      - "8000:8000"
    depends_on:
      - db

  db:
    image: postgres:13.0-alpine
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    environment:
      - POSTGRES_USER=my_user
      - POSTGRES_PASSWORD=my_password
      - POSTGRES_DB=my_db

volumes:
  postgres_data:

执行命令 docker exec -it container_id psql -U postgres 时出现错误:

psql: error: could not connect to server: FATAL:  role "postgres" does not exist
解决方法
  • 使用配置的用户登录数据库
    你在docker-compose.yml中指定的PostgreSQL用户是my_user,而非默认的postgres,正确的登录命令应为:

    docker exec -it container_id psql -U my_user -d my_db
    

    也可以先进入容器终端再连接:

    docker exec -it container_id sh
    psql -U my_user -d my_db
    
  • 同步Django数据库配置
    确保Django项目settings.py中的数据库配置与docker-compose.yml参数完全匹配:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': 'my_db',
            'USER': 'my_user',
            'PASSWORD': 'my_password',
            'HOST': 'db',  # 对应docker-compose中db服务的名称
            'PORT': 5432,
        }
    }
    
  • 清理残留数据卷(若存在旧配置)
    如果之前启动过使用默认用户的PostgreSQL容器,数据卷可能残留旧配置,需清理后重新启动服务:

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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:55:32