我有两个 Docker 容器,一个运行 React 应用程序(使用 create-react-app 构建),另一个运行 Node 应用程序 API。我设置了一个 docker-compose 文件,并根据文档 https://docs.docker.com/compose/networking/我应该能够使用服务的名称在容器之间进行通信。
但是,当我尝试向/login
我的 API 端点来自 React 应用程序,我收到了net::ERR_NAME_NOT_RESOLVED
错误。我正在使用 Unirest 发送请求。
我在网上进行了大量的挖掘,发现了一些描述类似问题的内容,但仍然无法找到解决方案。当我跑步时cat /etc/resolve.conf
(see this https://github.com/docker/compose/issues/2172问题)在我的 React 容器中,带有 API 的容器没有显示,但 Docker 对我来说仍然相当新,所以我不确定这是否是问题的一部分。我还尝试在我的撰写文件中使用链接和用户定义的网络,但无济于事。
我已经包括了我的要点docker-compose.yml
文件以及我的请求的代码片段。任何帮助深表感谢!
docker-compose.yml https://gist.github.com/turnervink/089be7b425e8e1f77df35e46215fd63d
Unirest 向 /logi 发出请求 https://gist.github.com/turnervink/33823ffcf395f783ff589942cf758bb0n
正如原帖评论中所讨论的,这是一个 DNS 问题。配置 DNS 对于这个项目的用例来说有点复杂,所以我通过使用环境变量来设置用于根据我是否运行在 API 容器上进行调用的 URL 来解决我的问题开发或生产环境:
(process.env.REACT_APP_URL_ROOT || '/app')
I set REACT_APP_URL_ROOT
在本地运行时到我的本地主机地址,并配置一个 nginx 容器来代理/app
当我构建和部署 React 应用程序时。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)