2017-04-03 11 views
1

私は、ノード経由でangle-cliアプリケーションをデプロイしています。 ng serve --prodではなく、npm startを使用します。ノード設定角度cli環境

--environment=prodの設定をnpmから達成して、environment.tsの代わりにenvironment.prod.tsを使用する方法はありますか?

マイDockerfile:package.jsonの

FROM node 
RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 
COPY package.json /usr/src/app 
RUN npm install 
COPY . /usr/src/app 
EXPOSE 4200 
CMD ["npm", "start"] 

トップ:

ng serve --prod 

しかし、私は行うことはできません。

{ 
    "name": "asgard2", 
    "version": "0.0.0", 
    "license": "MIT", 
    "scripts": { 
    "ng": "ng", 
    "start": "ng serve --host 0.0.0.0", 
    "build": "ng build", 
    "test": "ng test", 
    "lint": "ng lint", 
    "e2e": "ng e2e" 
}, 
[...] 

が生産開始するには、私が実行することができます。

npm start --prod 

少なくとも、私が行っても、それはまだデバッグとして展開されています。私の展開で何か間違っている可能性が非常に高いです。あなたのenvironment.tsファイルに移動して、

export const environment = { 
    production: true 
}; 
+0

不明。あなたのnpm開始スクリプトは何をしますか? –

+0

@JBNizet:すべてがangle-cliによって設定されたデフォルトですが、あなたは非常に良い点を作っています。私はおそらく最初に構築し、展開して提供するべきです。 –

+0

ああ、npmはデフォルトの 'ng serve'の代わりに' ng serve --prod'をやりたいのですか? package.jsonを編集し、 'ng serve'の後に' --prod'を追加するだけです。 –

答えて

1

export const environment = { 
    production: false 
}; 

を変更することができ

1

私の知る限り理解し、あなたは本当、本番Webサーバーにアプリケーションをデプロイします。

ng build --prodを使用してください。それはdistディレクトリの下に静的ファイルのセットを生成します。これは、静的ファイルを提供できるWebサーバーによって提供されます。

dockerコンテナにプロダクションWebサーバー(ApacheやNginxなど)をインストールし、それらの静的ファイルを提供するようにします。

また、必要に応じてノードベースのWebサーバーを使用することもできますが、目的が静的ファイルを提供するだけであれば、実際にはその点は表示されず、ApacheまたはNginxがおそらく効率的になります。

+0

しかし、生産していないときには、逆の反応が起こります。私は、展開中にenvironment.tsの内容をenvironment.prod.tsにコピーできると思います。 –