执行docker-compose启动pgadmin4报错端口已占用如何解决?
问题原因
你的pgadmin4容器启动失败是因为宿主机80端口已被占用:报错信息中明确提示listen tcp4 0.0.0.0:80: bind: address already in use,你配置的pgadmin4服务需要绑定宿主机的80端口对外提供服务,但该端口已经被其他进程(可能是本机运行的Nginx、Apache等Web服务,或者其他Docker容器)占用,Docker无法完成端口绑定所以启动失败。
修复方法
你可以根据自己的需求选择以下任意一种方案:
方案1:释放80端口
如果占用80端口的进程不需要保留,你可以先结束对应进程再启动容器:
- 执行命令查看占用80端口的进程ID:
sudo lsof -i :80 # 或者用 sudo ss -tulpn | grep :80 - 拿到进程ID后执行
sudo kill -9 <进程ID>结束进程 - 重新执行
docker-compose up启动服务即可
方案2:修改pgadmin的端口映射(更推荐,不影响原有服务)
如果80端口的进程需要保留,直接修改docker-compose.yml配置中pgadmin的对外映射端口即可:
- 找到docker-compose.yml中pgadmin服务的ports配置段,将published的端口修改为未被占用的端口,比如8080:
ports: - target: 80 published: 8080 protocol: tcp mode: host - 保存修改后,先执行
docker-compose down停止已经启动的postgresql容器 - 重新执行
docker-compose up启动两个容器,启动成功后访问http://<你的主机IP>:8080即可打开pgadmin页面。
内容的提问来源于stack exchange,提问作者AndreaNobili
相关产品推荐
相关产品推荐

