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

Next.js构建SSG时无法解析后端容器地址,构建失败求助

问题原因与解答

1. 错误原因

docker build frontend执行时,构建容器处于Docker默认的构建网络中,而你启动的backend服务位于自定义的app-net桥接网络里。这两个网络相互隔离,构建容器无法通过服务名backend解析到对应的容器,因此出现getaddrinfo ENOTFOUND backend错误。

2. 后端服务对前端构建过程是否可见?

完全不可见。docker build的执行上下文是独立的,不会自动加入你运行中的容器所在的自定义网络。哪怕backend已经在app-net中正常运行,构建过程也无法访问该网络内的服务。

3. 开发环境正常的原因

开发环境下你直接在本地机器执行yarn build,而非Docker构建:

  • 本地机器可以通过端口映射(比如backend暴露的8000端口)、容器IP,或者开发环境的代理配置直接访问后端服务;
  • 开发环境没有Docker构建的网络隔离限制,因此SSG预渲染能正常拉取后端数据。

可行解决方案

  • 改用Docker Compose构建:执行docker compose build frontend,Compose会自动将构建容器加入到app-net网络,此时构建过程就能解析backend服务名。如果需要传递后端地址,可通过--build-arg传入,比如:
    docker compose build frontend --build-arg BACKEND_API=http://backend:8000
    
  • 本地预构建静态文件:先在本地完成SSG构建,将生成的.next或静态文件目录拷贝到镜像中,避免在Docker构建阶段请求后端;
  • 使用主机网络访问后端:在构建时通过host.docker.internal(Docker桌面版支持)访问主机映射的后端端口,比如将backend的8000端口映射到主机,构建时请求http://host.docker.internal:8000。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 16:13:22