无法让 Docker 容器相互通信

IT技术 node.js reactjs docker docker-compose unirest
2021-05-02 23:42:25

我有两个 Docker 容器,一个运行 React 应用程序(使用 create-react-app 构建),另一个运行 Node 应用程序 API。我设置了一个 docker-compose 文件,根据文档,我应该能够使用服务的名称在容器之间进行通信。

但是,当我尝试/login从 React 应用程序向我的 API 端点发送请求时,我收到了一个net::ERR_NAME_NOT_RESOLVED错误。我正在使用 Unirest 发送请求。

我已经在网上进行了大量挖掘,并遇到了一些描述类似问题的事情,但仍然无法找到解决方案。当我在我的 React 容器中运行cat /etc/resolve.conf(参见这个问题)时,带有我的 API 的容器没有出现,但 Docker 对我来说仍然相当新,所以我不确定这是否是问题的一部分。我还尝试在我的撰写文件中使用链接和用户定义的网络,但无济于事。

我已经包含了我的docker-compose.yml文件的要点以及我的请求的代码片段。任何帮助深表感谢!

搬运工-compose.yml
Unirest请求/洛吉Ñ

1个回答

正如在原帖的评论中所讨论的,这是一个 DNS 问题。这个项目的用例有点涉及配置 DNS,所以我通过使用环境变量来设置用于调用我的 API 容器的 URL 解决了我的问题,该 URL 基于我是否正在运行开发或生产环境:

(process.env.REACT_APP_URL_ROOT || '/app')

REACT_APP_URL_ROOT在本地运行时设置为我的 localhost 地址,并配置了一个 nginx 容器以/app在我构建和部署 React 应用程序时代理