Docker Nginx与Angular JS - 加载静态CSS,图像,JS与动态网址

时间:2016-06-17 10:23:23

标签: angularjs node.js nginx docker staticfilehandler

我们正在将旧版部署迁移到Docker容器。所有服务都将在单独的docker容器中运行。服务包括Postgres,Redis,JobProcessor,LogProcessor,带领事模板的Nginx,Consul,Registrator,Rabbitmq和Platform(Node JS)。

我们将这些服务拆分为Master和Platform。主服务包括除平台之外的所有上述服务。

平台将根据客户要求运行单个应用程序。我们还将修改平台代码以满足客户要求。更改包括设计,布局,图像甚至有时API(包括/删除API)。因此,每个应用程序将作为单独的容器运行。

客户可以使用http://platform.com/AppName

访问该应用程序

使用NodeJs,AngularJs构建平台。我们处理代码以根据应用名称进行动态http调用。现在的挑战是加载css文件,图像和一些静态js文件。我们不想修改代码来更新每个应用程序的URL。

有没有任何已知的方法可以解决这个问题?

2 个答案:

答案 0 :(得分:0)

这就是我理解的,你想使用不同的URL访问同一组静态文件(css和图像)。

通过指定重写URL格式并指向一个静态URL,猜测应该很简单。因此,相同的内容将是使用不同动态URL的服务器。

重写网址格式如下:some-domain.com/{%a-z}/style.css some-domain.com/style.css

因此它可以为所有产品提供服务。希望这会对你有所帮助。

答案 1 :(得分:0)

通过控制器绑定您的特定css文件。

在angular.module中添加一个控制器来设置特定的css文件。

.controller('cssCtrl',['$scope','$http', function($scope,$http){
 $http.get('<your domain specific css url>').
        then(function(response) {
            //HERE YOU CAN MANIPULATE YOUR CSS TO SET THE RIGHT IMAGE URL
            $scope.css = response.data.temp.css;     
        }, function(response) {
            alert('Error retrieving css: ' + response);
        });
 }]

将HTML链接添加到您的HTML中。

<head ng-controller="cssCtrl">
  <link ng-attr-href="{{css}}" rel="stylesheet" type="text/css">
</head>