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

Docker Desktop升级至4.30后Next.js 13出现随机端口ECONNREFUSED错误

Docker Desktop 4.30升级后Next.js 13开发服务器随机端口ECONNREFUSED问题分析

结合你提供的docker-compose配置、错误信息和环境变化,以下是可能的问题原因:

1. 共享网络模式的兼容性变更

你的应用容器使用了network_mode: service:db,即共享数据库容器的网络命名空间。Docker Desktop 4.30可能对这种网络共享模式的端口映射、内部端口监听逻辑做了调整,导致Next.js开发服务器的端口管理(包括热重载代理、内部通信端口)与新的网络规则冲突,进而出现随机端口无法连接的情况。

2. Next.js端口检测与Docker网络的异常交互

Next.js开发服务器启动时会自动检测可用端口,若3000被占用则切换至其他端口。在Docker 4.30的共享网络环境下,端口占用检测机制可能出现异常,导致Next.js错误选择了宿主机无法访问的随机端口,或内部通信时指向了错误的端口地址。尤其是Next.js 13的App Router模式存在内部代理逻辑,更容易受网络环境变化影响。

3. Volume挂载导致的配置异常

你的配置中挂载了多个node_modules卷和工作区目录,Docker 4.30对volume挂载的文件权限、同步机制的调整,可能导致Next.js的端口管理依赖包无法正常读取/写入配置,进而引发随机端口问题。比如pnpm store的挂载可能干扰了Next.js内部的端口检测逻辑。

4. macOS与Docker 4.30的网络栈兼容性问题

最新版macOS的网络栈可能与Docker Desktop 4.30的新网络实现存在兼容性冲突,特别是loopback地址(127.0.0.1)的端口转发环节,导致容器内的Next.js服务无法正确映射到宿主机3000端口,反而尝试连接错误的随机端口。

临时排查方案

  • 强制指定Next.js端口:启动时执行pnpm dev -p 3000,固定端口后观察是否仍出现错误。
  • 调整网络配置:取消network_mode: service:db,创建自定义网络并将应用、数据库加入同一网络,通过服务名db访问数据库,测试问题是否消失。
  • 重置Docker网络:执行docker network prune后重启Docker Desktop,清除异常网络配置。

内容的提问来源于stack exchange,提问作者Zając

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 19:01:17