具有可变路径和ember.js的生产托管docker映像

具有可变路径和ember.js的生产托管docker映像,ember.js,Ember.js,在nginx中部署my ember应用程序的docker映像的最佳实践是什么,其中rootURL可能在不同的环境中有所不同?我的设想如下: 构建一个环境设置为“生产”的ember应用程序 将其固定在nginx容器中 Ember数据调用位于代理通过的nginx实例后面的REST api,即nginx(包含Ember应用程序/资产)提供的/assets/etc,以及nginx代理通过的/api/v1/etc上的REST api serializers/application.js的命名空间设置为ap

在nginx中部署my ember应用程序的docker映像的最佳实践是什么,其中rootURL可能在不同的环境中有所不同?我的设想如下:

  • 构建一个环境设置为“生产”的ember应用程序
  • 将其固定在nginx容器中
  • Ember数据调用位于代理通过的nginx实例后面的REST api,即nginx(包含Ember应用程序/资产)提供的
    /assets/etc
    ,以及nginx代理通过的
    /api/v1/etc
    上的REST api
  • serializers/application.js
    的命名空间设置为
    api/v1
  • 以上内容在我的本地开发docker引擎、测试和系统测试环境中非常有效,其中url是
    /index.html
    /api/v1/myrestendpoint

    不幸的是,我们的生产和UAT基础设施并不相同,因为我们有一个单独的子域,比如
    frontend.domain.com
    ,它使用负载平衡器根据紧跟在域之后的路径(例如
    frontend.domain.com/customer1
    )将请求代理给后面的服务,以便点击nginx ember资产服务器的url将是
    frontend.domain.com/customer1/index.html
    。路由工作到该页面,但是预构建的ember应用程序和返回的资产具有从
    /assets
    而不是
    /customer1/assets
    加载其他资产的引用,因此我们得到404,在ember数据REST调用503的情况下得到404

    我的工作是使用nginx中的sub_filter模块更新路径,例如

        location / {
          sub_filter_types *;
          sub_filter 'assets'  'customer1/assets';
          sub_filter '%22rootURL%22%3A%22/%22' '%22rootURL%22%3A%22/customer1/%22';
          sub_filter 'rootURL:"/"' 'rootURL:"/customer1/"';
          sub_filter_once off;
          try_files $uri /index.html =404;
        }
    
    它修复了css和js资产的路径,更新了ember ENV中的rootURL属性,并对ember app js中的rootURL执行了相同的操作。这似乎可行,但不是最好的办法

    另一种选择可能是在ember
    config/environment.js
    中执行某些操作,并针对不同的部署环境进行构建,但这将违反我们公司的政策,即相同的docker映像将通过测试投入生产。当我们将customer2路径作为url的一部分时,这肯定不会有帮助

    有人能提出解决办法吗

    我遇到的另一个问题是,Chrome在index.html中使用构建生成的integrity属性更改路径后拒绝加载我的JS资产,因此我必须设置
    integrity=”“
    ,这也不太好