服务器中运行项目端口号冲突
描述
服务器中运行项目端口号冲突,导致现在进行部署的项目启动失败。
问题
bash
$ docker compose up -d
[+] Running 8/9
✔ Network weknora_WeKnora-network Created 0.1s
✔ Volume "weknora_data-files" Created 0.0s
✔ Volume "weknora_postgres-data" Created 0.0s
✔ Volume "weknora_docreader-tmp" Created 0.0s
✔ Container WeKnora-redis Started 0.7s
✔ Container WeKnora-postgres Healthy 11.2s
✔ Container WeKnora-docreader Healthy 6.2s
⠼ Container WeKnora-app Starting 11.4s
✔ Container WeKnora-frontend Created 0.1s
Error response from daemon: failed to set up container networking: driver failed programming external connectivity on endpoint WeKnora-app (0766b2b42271497e1eda6fd593fee10dce367ea273827ffb39ae58bbe5af8e3f): failed to bind host port for 0.0.0.0:8080:172.20.0.5:8080/tcp: address already in use
上述很容易看出是端口号冲突问题
1.检查8080端口号是哪个进程在使用。
sudo ss -ltnp 'sport = :8080'

接下来,通过pid定位。
2.pid
bash
查看启动命令,通常能看到 jar、Python 脚本或项目路径
ps -p 12345 -o pid,ppid,user,lstart,args
# 查看进程的工作目录
sudo readlink -f /proc/12345/cwd
# 查看它是否由 systemd 服务管理
sudo systemctl status 12345 --no-pager

解决
只能杀死就项目进程。
或者我们就是直接修改weknora项目的端口号。
- 使新配置生效在Weknora项目中的
.env配置文件中修改APP_PORT=8080:
# 应用服务宿主机映射端口,默认 8080(仅影响宿主机访问,不影响容器间通信)。 APP_PORT=8080
- 使新配置生效:
bashdocker compose config --quiet docker compose up -d --wait --wait-timeout 180 docker compose ps -a
tips:使用 up 应用配置变更;无需重新拉取镜像。