node.jsの代わりにnginxを使用してreactサービスを開始
1675 ワード
フロントエンドの動作にはいくつかの方法があります.
開発環境:webpack-dev-serverで起動
本番環境:buildフォルダにパッケージ化した後、httpサービスでbuildフォルダをロードします.
開発環境
package.jsonで定義されています.
したがって、npm startはwebpack-dev-serverを使用してhttpサービスを開始することができます.(ルーティング関係は、あるjsに書かれており、nginxを必要とせずに動作する)
せいさんかんきょう
docker-compose.ymlでstart.shが呼び出され、start.shのコアはnode serverが実行されます.
Node serverとは?パッケージ.jsonでショートカットを定義していません.
実際、node serverはnode server.jsに等しく、server.jsをロードして起動します.
したがって、本番環境の導入手順は次のとおりです. npm run build(webpackでbuildフォルダにパッケージ) buildフォルダとserver.jsをnodeサービスコンテナにコピー(start.shは実際には必要なく、直接中のコマンドを実行すればよい) node server起動すればいい. ルーティング関係を設定したnginxと協力しなければ、フロントエンドは正常にworkできません.そうしないと、トップページを開くしかありません.
以上から分かるように、生産環境でもnginxを直接使用することができ、以下の2つのメリットがあります. nginxを使用すると、server.jsファイルを必要とせずにbuildフォルダだけで済むので、より簡潔です. 従来のnode+nginxの2つのサービス簡略化は1つのnginxサービス のみ必要である.
nginx起動スキームに変更すると、nginx.confの変更は以下のように参照できます.
開発環境:webpack-dev-serverで起動
本番環境:buildフォルダにパッケージ化した後、httpサービスでbuildフォルダをロードします.
開発環境
package.jsonで定義されています.
"scripts": {
"start": "set NODE_ENV=development && webpack-dev-server --config ./webpack.dev.config.js",
"build": "export NODE_ENV=production && rm -rf ./build && webpack",
},
したがって、npm startはwebpack-dev-serverを使用してhttpサービスを開始することができます.(ルーティング関係は、あるjsに書かれており、nginxを必要とせずに動作する)
せいさんかんきょう
docker-compose.ymlでstart.shが呼び出され、start.shのコアはnode serverが実行されます.
Node serverとは?パッケージ.jsonでショートカットを定義していません.
実際、node serverはnode server.jsに等しく、server.jsをロードして起動します.
したがって、本番環境の導入手順は次のとおりです.
以上から分かるように、生産環境でもnginxを直接使用することができ、以下の2つのメリットがあります.
nginx起動スキームに変更すると、nginx.confの変更は以下のように参照できます.
#
#location / {
#proxy_pass http://nodeserver;
#index index.html index.htm;
#}
#
root /frontend;
location / {
try_files $uri /index.html;
index index.html;
}
nginx:
image: nginx:1.16.0
volumes:
# build nginx
- ./front_end/build:/frontend/