无法让 Docker 个容器相互通信

Unable to have Docker containers communicate with each other

我有两个 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 文件的要点以及我的请求的代码片段。非常感谢任何帮助!

docker-compose.yml
Unirest request to /login

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

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

我在本地 运行 时将 REACT_APP_URL_ROOT 设置为我的本地主机地址,并在我构建和部署 React 应用程序时将 nginx 容器配置为代理到 /app