我有两个Docker容器,一个运行React应用程序(使用create-react-app构建),另一个运行Node app API。我有一个docker-compose文件设置,根据documentation,我应该能够使用服务名称在容器之间进行通信。
但是,当我尝试从React应用程序向我的API的/login
端点发送请求时,我收到了net::ERR_NAME_NOT_RESOLVED
错误。我正在使用Unirest发送请求。
我已经做过一堆在线挖掘,并且遇到了一些描述类似问题的事情,但仍然无法找到解决方案。当我在我的React容器中运行cat /etc/resolve.conf
(请参阅this问题)时,带有我的API的容器没有出现,但Docker对我来说仍然是一个新手,所以我不确定这是否属于问题。我也尝试在我的撰写文件中使用链接和用户定义的网络,但无济于事。
我已经包含了docker-compose.yml
文件的要点以及我的请求的代码段。非常感谢任何帮助!
答案 0 :(得分:0)
正如在原始帖子的评论中所讨论的,这是一个DNS问题。配置DNS对于这个项目的用例有点牵扯,所以我通过使用环境变量设置用于根据我是否正在运行来调用我的API容器的URL来解决我的问题开发或生产环境:
(process.env.REACT_APP_URL_ROOT || '/app')
我在本地运行时将REACT_APP_URL_ROOT
设置为我的本地主机地址,并在构建和部署React应用程序时将nginx容器配置为代理/app
。