我有一个docker实例,它在端口80上运行apache,在端口3000上运行node.js+express。我需要从apache服务的网站向运行在端口3000上的节点服务器发出AJAX请求。
我不知道合适的url是什么。我尝试了localhost,但它解析为浏览网页的客户端的localhost (也是最终用户),而不是docker镜像的localhost。
提前感谢您的帮助!
发布于 2018-11-30 20:01:31
首先,你应该拆分你的容器--对于Docker来说,一个进程一个容器是一个很好的实践。
然后,您需要一些工具来编排这些容器。你可以从docker-compose开始,因为IMO是最简单的。
默认情况下,它将为您启动所有容器并管理它们的网络设置。
所以,假设你有以下docker-compose.yml文件来启动你的应用程序:
docker-compose.yml
version: '3'
services:
apache:
image: apache
node:
image: node # or whatever通过这样简单的配置,您的网络apache和node中就有了主机名。因此,在您节点应用程序内部,您将看到apache是apache主机。
只需使用docker-compose up启动它
发布于 2018-11-30 20:44:13
从...发出AJAX请求...网站连接到节点服务器
Apache提供的JavaScript、HTML和CSS都是由浏览器读取和解释的,浏览器可能运行在服务器所在的主机上,也可能不运行在同一主机上。一旦你进入浏览器级别,代码就不知道Docker参与了这一切。
如果你可以只发送不带主机名的链接,<img src="/assets/foo.png">将不需要任何配置就能正常工作。否则,您需要使用主机的DNS名称或IP地址,就像您在没有Docker的情况下直接在主机上运行这两个服务一样。
https://stackoverflow.com/questions/53557045
复制相似问题