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

Jenkins+Docker-Compose部署报错:443端口占用问题求助

问题原因分析

1. 配置文件不匹配

错误提示的php服务并未出现在你提供的docker-compose.yaml中,说明Jenkins流水线执行的不是当前展示的这个docker-compose文件:

  • 检查Jenkinsfile里指定的路径/home/ngweb-compose/docker-compose.yaml,确认该文件是否包含php服务,且该服务配置了443端口的映射(比如443:443);
  • 对比本地测试用的docker-compose.yaml和Jenkins操作的文件,确认两者是否存在差异。

2. 443端口被占用

Jenkins运行所在的节点(agent)上,443端口已被其他进程占用:

  • 执行lsof -i :443或netstat -tulpn | grep :443,查看占用443端口的进程(比如系统自带的nginx、httpd,或者其他运行中的容器);
  • 本地命令行环境中该端口可能未被占用,但Jenkins节点环境有其他服务占用了该端口,导致容器启动时端口绑定失败。

3. 旧容器未清理

Jenkins流水线中仅执行docker-compose start,未先停止并清理旧容器:

  • 之前的构建可能已经启动过包含php服务的容器,且该容器仍在占用443端口;
  • 本地测试时可能先执行了docker-compose down清理环境,而Jenkins直接执行start会尝试复用已有容器,引发端口冲突。

4. 镜像内部配置问题

你构建的jceleste/ngweb镜像内部可能包含php服务,且该服务默认监听443端口,同时docker-compose配置中错误地将宿主机443端口映射到了该服务端口:

  • 检查Dockerfile,确认镜像内部是否启动了php服务并监听443端口;
  • 确认Jenkins修改后的docker-compose.yaml是否添加了该端口映射规则。
解决建议
  • 先确认Jenkins操作的docker-compose.yaml文件内容,确保和本地测试用的配置一致;
  • 在Jenkins的Deploy阶段,先执行docker-compose down清理旧容器,再执行docker-compose up -d启动服务;
  • 检查Jenkins节点的443端口占用情况,停止占用该端口的进程,或者修改docker-compose中的端口映射(比如改为8443:443);
  • 检查Dockerfile和镜像内部的服务配置,确认端口监听逻辑是否符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 00:15:55