【发布时间】:2017-09-06 16:32:37
【问题描述】:
我有一个带有自己的 Dockerfile 的 ReactJS 项目,暴露了 3000:3000 端口。
我还有一个 PHP 项目,它有自己的 Dockerfile,暴露了 80:80 端口。 PHP 应用程序还包含 MySQL、Redis 和 Nginx 的容器
对于 PHP 应用程序,我有一个 docker-compose 文件,它为 PHP、Nginx、MySQL 和 Redis 创建一个网络 (my-net) 以进行通信。但是,我现在希望 ReactJS(在一个单独的项目中)能够与 PHP 应用程序通信。
我在 React 项目中添加了一个 docker-compose 文件,并从 PHP 项目 my-net 将其添加到网络中,并将其声明为 external,以便它不会尝试创建它。
这似乎有效:从 ReactJS 容器中,我可以 ping app(我的后端服务的名称)并且它可以正常工作。但是,从 ReactJS 代码中,如果我使用 axios 之类的东西来尝试访问后端 API,它无法解析 app 或 http://app 或任何变体。但是,如果我将其替换为 axios,它可以访问底层 IP 地址。
所以主机名解析似乎存在一些问题,大概是在axios / JavaScript 端。是否有我遗漏的东西或无法正常工作的原因?
【问题讨论】: