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

基于jwilder/nginx-proxy运行Laravel Docker项目提示3306端口占用如何解决

问题修复方案

1. 定位3306端口真实占用进程

报错明确指向3306端口被占用,需使用root权限查询才能覆盖所有系统级进程:

  • 执行端口查询命令:sudo lsof -i :3306 或 sudo netstat -tulpn | grep 3306
  • 若返回宿主机原生MySQL服务进程,执行sudo systemctl stop mysql关闭服务,需永久禁用开机自启可追加执行sudo systemctl disable mysql
  • 若返回Docker相关进程,说明有残留容器未清理,执行docker ps -a | grep 3306获取对应容器ID后,执行docker rm -f <容器ID>强制删除

2. 清理Docker全局残留资源

docker-compose down仅能清理当前目录compose文件关联的资源,其他项目的残留容器、网络需要全局清理:

  • 停止所有运行中的Docker容器:docker stop $(docker ps -q)
  • 清理所有停止容器、未使用网络、悬空镜像:docker system prune -f
  • 若确认不需要旧项目的MySQL存储数据,可追加清理未使用的存储卷:docker system prune -f --volumes

3. 可选:调整端口映射规避冲突

如果需要保留宿主机原生3306服务,修改当前项目的docker-compose.yml配置:

  • 找到MySQL服务的ports配置项,将原有"3306:3306"修改为未占用端口映射,例如"3307:3306",项目内部连接MySQL仍使用3306端口,外部访问使用3307端口即可
  • 同步检查jwilder/nginx-proxy的端口映射规则,确认80、443等端口无宿主机服务占用,存在冲突也可按相同逻辑修改映射端口

4. 验证服务状态

  • 回到项目目录执行docker-compose up -d后台启动服务
  • 执行docker ps确认所有容器状态为Up,无循环重启的容器
  • 503服务不可用错误通常是nginx-proxy无法转发请求到后端Laravel服务,需确认Laravel容器已正常启动、环境变量配置正确、VIRTUAL_HOST参数与访问的域名/IP匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:09:03