2017-06-09 16 views
2

の原則に従うことができますか?angular 2適用の場合はを一度ビルドして展開しますか?角2を一度ビルドしてどこにでも展開

私はすべての環境のために個別にそれを構築するために私に言う答えを見つけておくが、それは私が探しているものではないのです。

我々はdockertomcatを使用しています。

ありがとうございます。

+1

これは間違いなく可能ですが、もう少し情報を提供できますか?あなたは環境に応じて何を変えたいですか?それはそれぞれの環境ごとに異なる設定をしていますか? – Melou

+0

は主にバックエンドAPIのURLです。私たちは受け入れ環境、開発環境などのために別々のURLを持っています。 はい、各環境ごとに異なる設定です。 – Krikke93

+0

角度アプリはtomcatによって提供されていますか? – Melou

答えて

1

私は設定dynamicalyをロードするすべてのアプリケーションの共通点がAPP_INITIALIZERと呼ばれる角度プロバイダを使用することだと思います。

このプロバイダは、角度アプリをブートストラップする前にいくつかのコードを実行することができます。通常、実行するコードはget some config from an endpoint, eg /configurationのようなものです。例here

あなたはコードを自分で書くことができるか、このLIBを使用することができます(フードの下、このAPP_INITIALIZER使用しています):https://github.com/ngx-config/core、以下の例では、より正確にConfigHttpLoader

、我々はをロードするためのlibを使用します/ configurationをhttpコール経由で送信します。これはあなたのapp.module.ts

export function configFactory(http: Http): ConfigLoader { 
    return new ConfigHttpLoader(http, '/configuration'); // FILE PATH || API ENDPOINT 
}  

@NgModule({ 
imports: [ 
ConfigModule.forRoot({ 
      provide: ConfigLoader, 
      useFactory: (configFactory), 
      deps: [Http] 
     }) 
] 
}) 

に行くその後、あなたは/設定を提供方法は、あなたがあなたのアプリを提供する方法に依存します。私はこのプロジェクトでやったことだった。

  • フロントエンドアプリは、すべての構成(dev.json、integ.json、prod.json)環境変数(DEVまたはINTEGまたはPROD)をドッカーする
  • パスでパッケージされていますドッキングウィンドウの画像のDockerfileで
  • 、環境に応じて、正しい設定ファイルへのシンボリックリンクを作成し、その後、サーバーを起動し(私の場合、それはnginxのだった):

CMD ln -nfs /path/to/config/${ENVIRONMENT}.json /path/to/configuration && nginx -g "daemon off;"

この方法でフロントエンドアプリケーションは常に/設定をロードしますが、環境によってはシンボリックリンクが別の設定ファイルを指しています。

あなたはこのようなものを使用することができます。

関連する問題