node.jsの代わりにnginxを使用してreactサービスを開始

1675 ワード

フロントエンドの動作にはいくつかの方法があります.
開発環境: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をロードして起動します.
 
したがって、本番環境の導入手順は次のとおりです.
  • 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の変更は以下のように参照できます.
    		#            
    		#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/