0

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

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

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

客户可以使用http://platform.com/AppName访问应用程序

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

有没有已知的方法来破解这个?

4

2 回答 2

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);
        });
 }]

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

<head ng-controller="cssCtrl">
  <link ng-attr-href="{{css}}" rel="stylesheet" type="text/css">
</head>
于 2016-06-17T17:05:52.367 回答
0

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

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

重写 URL 格式将如下所示: some-domain.com/{%az}/style.css some-domain.com/style.css

所以它可以为所有产品服务。希望这会帮助你。

于 2016-06-17T16:20:04.560 回答