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
相关产品推荐
相关产品推荐

