|
「Nodeアプリケーションを本番環境にデプロイするにはどうすればよいですか?」[1] 合理的かつ効率的な導入ソリューションは、迅速なアップグレード、スムーズな切り替え、負荷分散、アプリケーションの分離などの導入機能を実現できるだけでなく、成熟した安定した監視システムも備えています。 Kubernetes は Node アプリケーションをサーバー アプリケーションのブラック ボックスとして扱います。これは上記の条件に完全に一致しており、Kubernetes 上に Node をデプロイするチームがますます増えています。 しかしその前に、この章のトピックである Docker コンテナ上で Node アプリケーションを実行する必要があります。 シンプルなNodeアプリケーション インデックス.js Node WebアプリのHello, Worldバージョン
「package.json」 アプリケーションを起動するには npm start を設定します。
しかし、これは最も単純なNodeアプリケーションに過ぎません。実際の環境では、様々なデータ保存やスケジュールされたタスク操作がありますが、ここでは割愛します。これで十分です。 もう少し複雑なNodeアプリケーションについては、Shanyueのプロジェクトwhoami[5](最小限のサーバーレスおよびdockerizeの例)を参照してください。 NODE_ENV=本番環境 本番環境では、devDependecies 内の依存関係をインストールする必要はありません。環境変数 NODE_ENV が production に設定されている場合、devDep はスキップされます。
一方、一部のサードパーティ製モジュールは、NODE_ENV環境変数に基づいて予期しない設定を行う可能性があります。そのため、本番環境ではこの環境変数の設定には注意が必要です。 Nodeアプリケーションのシンプルなデプロイメント 典型的なサーバー側 Node アプリケーションは次のように実行されます。
実行手順を Dockerfile に変換します。
ほとんどのNodeアプリケーションではこれで十分です。パフォーマンスを向上させたい場合は、マルチステージビルドプロセスに進むことができます。 node-gypとネイティブアドオン Node には、Python、make、g++ に依存する node-gyp 経由でコンパイルされるネイティブ アドオンがいくつかある場合があります。
コンパイルプロセスを伴うイメージビルドでは、ソースファイルとビルドツールの両方がスペースを無駄にします。イメージのマルチステージビルドはスペースを効率的に活用できます。このルールは、GoアプリとFEアプリのビルドにも当てはまります。
Node アプリケーション イメージを構築する場合、イメージの最初のレイヤーを使用して node_modules が構築されます。
関連記事
参照 [1] Nodeアプリケーションを本番環境にデプロイするにはどうすればいいですか? https://github.com/shfshanyue/Daily-Question/issues/420 [2] Dockerでフロントエンドをデプロイする方法: https://shanyue.tech/frontend-engineering/docker.html [3] PreviewとProductionのフロントエンド展開: https://shanyue.tech/frontend-engineering/feature-deploy.html [4] フロントエンドデプロイメントの開発プロセス: https://shanyue.tech/フロントエンドエンジニアリング/deploy.html [5]whoami: https://github.com/shfshanyue/whoami [6] Goアプリケーションを複数の段階で構築する: https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds [7] 多段階フロントエンドアプリケーション構築: https://shanyue.tech/frontend-engineering/docker.html#%E5%A4%9A%E9%98%B6%E6%AE%B5%E6%9E%84%E5%BB%BA [8]N-APIとNode.js用のCアドオンの書き方: https://hackernoon.com/n-api-and-getting-started-with-writing-c-addons-for-node-js-cf061b3eae75 [9]開発と本番環境でのDocker for Node.jsの使用: https://dev.to/alex_barashkov/using-docker-for-nodejs-in-development-and-production-3cgp この記事は、WeChat公式アカウント「フルスタック成長への道」から転載したものです。以下のQRコードからアクセスできます。転載の許可については、「フルスタック成長への道」公式アカウントまでお問い合わせください。 |