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

Docker部署Django+Postgres项目时5433端口占用及连接失败如何解决

Django容器化部署数据库连接问题解决方案

问题根源

你遇到的两个报错对应两个核心配置错误:

  1. 初始端口占用是本地环境已有进程占用5433端口,终止后出现的连接失败是容器内部网络配置错误
  2. postgres容器默认监听内部5432端口,你的端口映射配置错误,无法正常暴露数据库服务
  3. Django配置中数据库HOST写为localhost,指向的是web容器自身,而非同网络下的postgres数据库容器

具体修改方案

1. 修正docker-compose.yml配置

注意yaml对缩进敏感,需保证db和web服务为平级的二级项:

version: "3"
services:
    db:
        image: postgres
        volumes:
          - ./data/db:/var/lib/postgresql/data
        environment:
          - POSTGRES_DB=fitshop
          - POSTGRES_USER=fituser
          - POSTGRES_PASSWORD=fitpass
        # 修正端口映射:宿主机5433映射到容器默认的5432端口
        ports:
          - "5433:5432"
    web:
        build: .
        command: python manage.py runserver 0.0.0.0:8000
        volumes:
          - .:/code
        restart: always
        ports:
          - "8000:8000"
        depends_on:
          - db

2. 修正settings.py数据库配置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'fitshop',
        'USER': 'fituser',
        'PASSWORD': 'fitpass',
        # 改为docker-compose的数据库服务名,容器内部网络会自动解析该名称
        'HOST': 'db',
        # 使用postgres容器内部默认监听端口
        'PORT': '5432',
    }
}

3. 重启容器生效

执行以下命令清理旧容器后重新启动:

# 注意:添加-v参数会删除已有的数据库数据卷,如有重要数据请先备份,可去掉-v参数
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 21:36:04