每当我尝试连接到后端服务时,我的客户服务都会说“ ERR_NAME_NOT_RESOLVED”。这是我的docker-compose文件:
version: "3.4"
services:
client:
build:
context: ./client-app
ports:
- '5001:80'
backend:
build:
context: .
ports:
- '5050:5000'
我让它对“ http://backend:5050/api/ ...”进行了GET调用,但这是我得到的错误。奇怪的是,将其切换到“ http://localhost:5050/api/ ...”即可。
有什么想法为什么会这样?就上下文而言,我的前端是NGINX上托管的React客户端,后端服务器是ASP.NET Core。
如果我分别启动每个容器并让客户端指向localhost,它将起作用。
谢谢!
答案 0 :(得分:0)
我认为您用于后端路由的端口是错误的。端口5050已发布到您的Docker主机,这就是对http://localhost:5050/api/的调用起作用的原因。
相反,请使用后端容器的内部端口和GET http://backend:5000/api/。
答案 1 :(得分:0)
从另一篇文章中找到...
AJAX请求是浏览器请求,而不是服务器端请求,并且您的浏览器不是mynetwork的一部分。发出ajax请求(客户端浏览器必须是公共域或具有服务节点端口的映射主机文件)。您仍然需要在浏览器主机中映射主机文件,或者在gui代码中使用带有服务节点端口的完整url。