RestAPI和前端在Docker的同一个端口上

时间:2016-04-16 09:49:07

标签: angularjs node.js nginx docker digital-ocean

我在DigitalOcean上创建了新的Droplet并安装了Docker。我有两个容器,一个用我的 NodeJS app = RestAPI 在8080端口,第二个用 Nginx 基本上暴露我的静态html文件(带AngularJS)端口80上的

但是现在,我想开始从我的前端AngularJS应用程序向NodeJS应用程序发出请求,但是通过端口80 。像:

$http({
method: 'GET',
url: '/api/myapi'

问题:两个Docker容器不能使用相同的端口(在这种情况下为80)。

如何在同一端口和同一域上公开RestAPI和Nginx WEB服务器?

这个想法是从AngularJS请求拥有域和相同的端口。

1 个答案:

答案 0 :(得分:0)

一种可能的解决方案是将NodeJS容器与Nginx容器相关联,并将端口8080从NodeJS映射到Nginx。 您还需要通过将NodeJS容器中的卷挂载到Nginx来与Nginx容器共享NodeJS文件。

然后在端口8080上创建一个Nginx上游,以便它可以代理对该端口的请求。接下来为Nginx配置添加规则,以便在请求任何静态文件时,nginx为其提供服务。但是对于任何非静态请求,请将请求传递给上游。