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

Docker Compose中TypeScript服务无法接收主机请求的排查问询

问题分析与解决

核心原因是你的Fastify服务仅监听了容器内部的localhost(127.0.0.1),而非所有可用网卡地址(0.0.0.0)。Docker端口映射是将主机端口转发到容器的外部网卡地址,服务没监听这个地址的话,主机请求就无法被响应。

为什么会出现这种差异?

  • 容器内curl localhost:8080能访问:容器内部的localhost指向自身回环地址,服务监听该地址时,容器内部请求可正常到达。
  • 换npx http-server能访问:http-server默认监听0.0.0.0,主机可通过端口映射直接触达服务。

解决步骤

  1. 修改Fastify启动代码,强制指定监听地址为0.0.0.0:
import Fastify from 'fastify'

const fastify = Fastify()

// 明确配置监听所有网卡地址
fastify.listen({
  port: Number(process.env.PORT) || 8080,
  host: '0.0.0.0'
}, (err) => {
  if (err) {
    fastify.log.error(err)
    process.exit(1)
  }
})
  1. 验证服务监听地址
    进入API容器执行以下命令,确认服务监听的是0.0.0.0:8080而非127.0.0.1:8080:
netstat -tulpn | grep 8080
  1. 重启服务
    修改代码后重新构建并启动容器:
docker-compose down && docker-compose up --build

此时主机执行curl localhost:8080即可正常访问API服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 14:17:41