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

SpringBoot连接Docker PostgreSQL后启动失败,端口被占用求助

问题原因与解决方案

原因分析

核心问题是端口冲突:你通过docker-compose将pgadmin容器的80端口映射到了宿主机的8080端口,而Spring Boot项目默认使用的Tomcat启动端口也是8080。项目启动时会先完成数据库连接和表创建操作,这一步不需要占用Tomcat端口,所以能正常执行;但当后续启动Tomcat服务时,发现8080端口已经被pgadmin容器占用,因此抛出Tomcat启动失败、端口被占用的错误。

解决方法

1. 修改pgadmin的端口映射

打开你的docker-compose.yml文件,将pgadmin的宿主机映射端口从8080改为其他未被占用的端口(比如8081):

services:
  pgadmin:
    image: dpage/pgadmin4
    ports:
      - "8081:80"  # 替换原有的"8080:80"
    # 其他原有配置保持不变

修改后执行命令重启容器:

docker-compose down && docker-compose up -d

2. 修改Spring Boot项目的Tomcat端口

在项目的配置文件中指定新的端口:

  • 若使用application.properties:
server.port=8082
  • 若使用application.yml:
server:
  port: 8082

保存配置后重启Spring Boot项目即可。

3. 释放8080端口(保留原有配置的情况下)

如果一定要使用8080端口,先找到并终止占用该端口的进程:

  • Linux/macOS系统:
    # 查找占用8080端口的进程PID
    lsof -i :8080
    # 终止进程,替换<PID>为查到的进程ID
    kill -9 <PID>
    
  • Windows系统:
    # 查找占用8080端口的进程PID
    netstat -ano | findstr :8080
    # 打开任务管理器,找到对应PID的进程并结束
    

处理完成后重新启动pgadmin容器和Spring Boot项目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 09:54:22