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

Docker部署Django应用时5432端口占用问题求助

端口5432被占用的问题原因及解决办法

问题原因

  • 本地PostgreSQL服务正在运行:5432是PostgreSQL的默认端口,若主机上已启动该服务,会直接占用此端口,导致Docker容器无法绑定。
  • 其他程序占用端口:部分数据库工具、后台服务也可能使用5432端口,引发冲突。

解决办法

方法1:停止本地PostgreSQL服务

  • Linux/macOS(systemd系统):执行命令 sudo systemctl stop postgresql,如需禁止开机自启可追加 disable 参数。
  • Windows:打开「服务」管理器,找到PostgreSQL相关服务,右键选择「停止」。

方法2:修改Docker Compose的端口映射

打开你的docker-compose.yml,找到postgres服务的ports配置项,将主机侧的端口改为未被占用的端口(比如5433),示例:

services:
  postgres:
    # 其他配置...
    ports:
      - "5433:5432"  # 主机5433端口映射到容器内5432端口

注意:如果Django应用是通过compose内部服务名连接数据库(比如host: postgres),无需修改Django的数据库配置;若直接连接主机端口,则要把Django配置里的数据库端口改成5433。

方法3:定位并终止占用端口的进程

  • Linux/macOS:
    1. 执行 lsof -i :5432,找到输出中PID列的进程ID
    2. 执行 kill -9 <PID>(替换成实际的PID)终止进程
  • Windows:
    1. 打开命令提示符,执行 netstat -ano | findstr :5432,找到最后一列的PID
    2. 打开任务管理器,切换到「详细信息」标签,找到对应PID的进程并结束任务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 16:31:34