同Docker网络下Node.js与React容器间API调用失败排查
React请求发起方是浏览器而非容器
React容器仅负责提供静态前端资源,实际API请求是由用户的浏览器发起的——浏览器并不在Docker网络内部,无法解析container_A这类容器别名或Compose服务名。这种情况下,应改用宿主机IP + 宿主机映射的Node.js服务端口调用API,比如http://你的宿主机IP:3000/books(假设宿主机把3000端口映射到Node容器的8000端口)。Node.js服务绑定地址错误
如果Node.js服务启动时仅绑定了localhost(即127.0.0.1),服务只会监听容器内部的本地回环地址,同一Docker网络内的其他容器无法访问。需要修改服务启动配置,让它绑定0.0.0.0,这样服务才能监听容器的所有网络接口,允许外部容器访问。容器不在同一Docker网络中
确认两个容器是否加入了同一个自定义Docker网络。默认的bridge网络存在隔离限制,Docker Compose默认会为所有服务创建专属网络,但如果是手动创建的容器,需要明确指定加入同一网络,否则无法通过别名通信。端口使用混淆
容器间通信使用的是容器内部暴露的端口(比如Node容器配置的8000),而宿主机访问用的是映射到外部的端口。如果React代码里错误混用了这两类端口,会直接导致请求失败。Node.js服务路由/配置问题
检查Node.js服务的路由是否存在硬编码的localhost或特定端口,导致容器间调用时路由不匹配。同时确认API端点的路径是否正确,比如是否遗漏前缀、存在大小写错误等。
内容的提问来源于stack exchange,提问作者lazlodev

