【发布时间】:2017-10-28 08:26:57
【问题描述】:
我在网上搜索了一段时间,但没有找到与 StackOverflow 问题 Docker HTTP-requests between containers 类似的问题的解决方案。但是这个答案已经是我在我的电脑上做的事情了。我正在提供我的 docker-compose 文件
version: "3"
services:
web:
image: ecdavis15/tsn-web-server
ports:
- "3000:3000"
links:
- app
app:
image: ecdavis15/tsn-app-server
ports:
- "3030:3030"
links:
- mongo
mongo:
image: mongo
ports:
- "27017:27017"
volumes:
- ./data/db:/data/db
在我的 Web 容器中,我向 http://app:3030/history 或 http://app:3030/rules 发出了 http get 请求,但我没有看到该请求到达应用程序容器。我在浏览器控制台中看到的是这个错误消息net::ERR_NAME_NOT_RESOLVED。我不确定为什么 http 请求没有进入应用程序容器,因为它已链接到 Web 容器。有什么想法吗?
【问题讨论】:
-
您能否从您的 Web 容器中 ping 应用程序容器?
-
请求是如何产生的?通过 AJAX 还是通过服务器端代码?
-
删除链接部分,您尝试做的事情不需要它。 Docker 为同名提供了 dns。
-
Ajax 调用是由您的浏览器而不是您的应用程序进行的。所以你不能使用
app:3030,因为浏览器不知道它。相反,您应该使用document.location.host + ":3030"来生成 api 所在的 url。 -
尝试使用主机名而不是主机。 Chrome 也使用您的系统主机文件而不是容器。您也可以使用 nginx 将它们合并到一台服务器下
标签: docker docker-compose docker-for-mac