我有一个在端口80上运行apache的docker实例,在端口3000上运行的node.js + express。我需要从apache服务的网站向在端口3000上运行的节点服务器发出AJAX请求。
我不知道要使用什么适当的网址。我尝试了localhost,但是解析为浏览网页的客户端的localhost(也是最终用户),而不是docker映像的localhost。
在此先感谢您的帮助!
答案 0 :(得分:1)
首先,您应该拆分容器-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
答案 1 :(得分:1)
从[...]网站向节点服务器发出AJAX请求
Apache提供的JavaScript,HTML和CSS全部由浏览器读取和解释,浏览器可能与服务器运行在同一主机上,也可能不在同一主机上运行。一旦进入浏览器级别,代码就不知道Docker是否参与其中。
如果您只发送没有主机名<img src="/assets/foo.png">
的链接就可以了,而无需进行任何配置就可以正常使用。否则,您需要使用主机的DNS名称或IP地址,就像您在没有Docker的情况下直接在主机上运行这两种服务一样。