1

私たちはインフラストラクチャ内でEmberCLIアプリケーションを実行しています。私はそれを他のサービスと併用することをお勧めします。 EmberCLIについて少し面白いことの1つは、すべての設定変数がデフォルトでビルドに焼き付けられることです。 (特に<meta>タグ内)。EmberCLIランタイムコンフィグレーション

実行時設定を提供する方法を見つけるのに苦労しました。すべてのサービスに提供されてAPIを見つけるために提供される「API_URL」環境変数があります。実行時にこのURLをEmberCLIに提供するための推奨される方法は何ですか?私はリビルドを避け、フロントエンドアプリケーションで完全に構築されたドッカーコンテナを用意しています。

+0

興味深い質問は、あなたのサーバーに何を使用しているのですか? Emberは、クライアント側アプリケーションとして、環境変数にアクセスすることはできません!あなたのアプリケーションをドッカーに入れたら、この変数をドッカーのコンテナにどのように設定しますか?おそらく環境変数を設定するのではなく、ある時点で 'meta'タグを置き換える方がよいでしょう。サーバーは実行時にもこれを行うことができますが、パフォーマンス/キャッシングのために、起動/ビルド時にのみこれを行う方が良いでしょう。 – Lux

+0

@Lux yea私は実際にスタートアップ時にこれを行うために探しています。私は、基本的にはember-cliがこれに対して良いアプローチであると考えるものが好奇妙です。ドッカーの設定は '--e'引数で渡されます。これは実行時の設定を渡すのに非常に一般的な方法です。 – Evert

+0

最悪のシナリオでは、起動前にsedを使って ''タグを変更していますが、私はemberエコシステム内で少し良く機能するものを探していました。 – Evert

答えて

0

コンフィグレーションに環境変数を使用する場合は、ember-cli-dotenvが役立ちます。それはあなたがconfig/enviroment.jsで環境変数にアクセスすることができます:

// config/environment.js 
module.exports = function(environment){ 
    return { 
    apiUrl: process.env.API_URL 
    } 
}; 

あなたはember-cli-build.jsで使用される環境変数をホワイトリストに登録する必要があります。

// ember-cli-build.js 
module.exports = function(defaults) { 
    var app = new EmberApp(defaults, { 
    dotEnv: { 
     clientAllowedKeys: ['API_URL'] 
    } 
    }); 

    return app.toTree(); 
}; 

短辺注:構成変数は残り火でビルドに焼かれます-cli原因ember-cliはビルド後に仕事をしています。生成されたファイルは、nginxのような通常のウェブサーバによって提供されるべきです。 ember serveで開始できるWebサーバーは、本番環境では使用しないでください。

+1

私はあなたが私の質問を誤解しているかもしれないと思います。ビルド後に変数を動的に指定したい場合はどうでしょうか?たとえember-cliの仕事ではないとしても、ember-cliコミュニティ内で受け入れられたベストプラクティスがあれば私は興味があります。私はドッカーをうまく使っている唯一の人になることはできません;) – Evert

+0

ビルド後に変更する必要がある場合は、操作メタタグ以外の方法はありません。 – jelhan

+0

申し訳ありませんが、私はそれを "いいえ"または "わからない"とします。あなたが正しいです、私はそれを動作させるためにできるいくつかのハッキングがあります、私は確かにそれを考慮したが、私は何らかの受け入れられたベストプラクティスを見つけることを望んでいた。 – Evert