【发布时间】:2019-11-16 05:29:28
【问题描述】:
我有两个 Docker 容器,一个运行 React 应用程序(使用 create-react-app 构建),另一个运行 Node 应用程序 API。我设置了一个 docker-compose 文件,根据documentation,我应该能够使用服务的名称在容器之间进行通信。
但是,当我尝试从 React 应用程序向我的 API 的 /login 端点发送请求时,我收到了 net::ERR_NAME_NOT_RESOLVED 错误。我正在使用 Unirest 发送请求。
我在网上进行了很多挖掘,遇到了一些描述类似问题的东西,但仍然无法找到解决方案。当我在我的 React 容器中运行cat /etc/resolve.conf(请参阅this 问题)时,带有我的 API 的容器没有显示出来,但 Docker 对我来说仍然相当新,所以我不确定这是否是问题的一部分。我也尝试在撰写文件中使用链接和用户定义的网络,但无济于事。
我已经包含了我的docker-compose.yml 文件的要点以及我的请求的代码 sn-p。非常感谢任何帮助!
【问题讨论】:
-
在 docker 上 ping
api主机是否有效? -
@LuisMuñoz 是的。如果我运行
docker exec -it amplifydemo_reactapp_1 ping api,我可以看到响应。 -
很好,那么错误出现在哪里?
-
在我的浏览器中使用 React 应用程序时。我有一个登录表单,它调用在
api容器中运行的我的API 的/login端点。当我提交表单时,我在浏览器控制台中收到http://api:8080/login net::ERR_NAME_NOT_RESOLVED。 -
DNS 问题!您必须将
api替换为您的浏览器可解析的主机名!
标签: node.js reactjs docker docker-compose unirest