ホームページ >ウェブフロントエンド >jsチュートリアル >dockerでnode.jsを使用する方法
このチュートリアルは、node.jsアプリケーションにdockerコンテナを使用することの利点を示し、効率的な開発ワークフローを確立します。
node.jsは、サーバーとクライアントの両方の側でJavaScriptを使用して、高速でスケーラブルなWebアプリケーションの作成を強化します。 アプリケーションは開発マシンで完璧に機能する可能性がありますが、さまざまな環境(同僚のマシン、生産サーバー)での一貫したパフォーマンスは保証されていません。 これらの潜在的な問題を考慮してください:
クロスプラットフォーム互換性:dockerは、node.jsアプリケーションが孤立したコンテナ環境で実行できるようにすることにより、「マイチンで動作する」という問題を解決します。
利点は多数あります:
一貫した環境:
dockerセットアップは、生産Linuxサーバーを反映して、展開を簡素化します。簡略化された依存関係管理:
依存関係を分でダウンロード、インストール、構成します。 クロスプラットフォームの一貫性:コンテナ化されたアプリは、すべてのプラットフォームで同じように動作します。
あなたの最初のnode.jsスクリプト
Dockerデスクトップ(Windows、MacOS、またはLinux)をインストールします。 version.js
:
<code class="language-javascript">console.log(`Node.js version: ${process.version}`);</code>
node.jsがローカルにインストールされている場合は、バージョンを表示するために実行します。 次に、Dockerコンテナ内で実行します(最新のLTS node.jsバージョンを使用):
(macos/linux)
<code class="language-bash">$ docker run --rm --name version -v $PWD:/home/node/app -w /home/node/app node:lts-alpine version.js</code>
(Windows PowerShell)
最初の実行には、Dockerが依存関係をダウンロードすると、少し時間がかかる場合があります。後続の実行ははるかに高速です。 node.jsバージョン(例:<code class="language-powershell">> docker run --rm --name version -v ${PWD}:/home/node/app -w /home/node/app node:lts-alpine version.js</code>)を簡単に切り替えることができます。 スクリプトは、特定のnode.jsバージョンを使用してLinuxコンテナ内で実行されます。
node:21-alpine
コマンドブレークダウン:
:画像からコンテナを起動します。
docker run
:終了時に容器を取り外します。--rm
:コンテナに名前を割り当てます。--name version
:現在のディレクトリをコンテナ内のボリュームとしてマウントします。
-v $PWD:/home/node/app
-w /home/node/app
node:lts-alpine
version.js
、または:lts-alpine
20-bullseye-slim
依存関係とビルドステップ(npmを使用)を備えたアプリケーションの場合、カスタムDocker画像が必要です。この例では、express.js:latest
を使用しています
という名前のディレクトリを作成し、:を追加します
および
:
simple
package.json
a
<code class="language-json">{ "name": "simple", "version": "1.0.0", "description": "simple Node.js and Docker example", "type": "module", "main": "index.js", "scripts": { "debug": "node --watch --inspect=0.0.0.0:9229 index.js", "start": "node index.js" }, "license": "MIT", "dependencies": { "express": "^4.18.2" } }</code>を作成します
画像を作成します:index.js
<code class="language-javascript">// Express application import express from 'express'; // configuration const cfg = { port: process.env.PORT || 3000 }; // initialize Express const app = express(); // home page route app.get('/:name?', (req, res) => { res.send(`Hello ${req.params.name || 'World'}!`); }); // start server app.listen(cfg.port, () => { console.log(`server listening at http://localhost:${cfg.port}`); });</code>コンテナを実行します:
Dockerfile
<code class="language-dockerfile"># base Node.js LTS image FROM node:lts-alpine # define environment variables ENV HOME=/home/node/app ENV NODE_ENV=production ENV NODE_PORT=3000 # create application folder and assign rights to the node user RUN mkdir -p $HOME && chown -R node:node $HOME # set the working directory WORKDIR $HOME # set the active user USER node # copy package.json from the host COPY --chown=node:node package.json $HOME/ # install application modules RUN npm install && npm cache clean --force # copy remaining files COPY --chown=node:node . . # expose port on the host EXPOSE $NODE_PORT # application launch command CMD [ "node", "./index.js" ]</code>。
でアプリにアクセスします
docker image build -t simple .
a
docker run -it --rm --name simple -p 3000:3000 simple
Docker Composeの改善された開発ワークフロー
http://localhost:3000/
以前の方法は、開発には非効率的です。 Docker Composeはより良いソリューションを提供します。
を作成します
.dockerignore
。 自動再起動のトリガーの変更。 VSコードのデバッガー(ポート9229に添付)を使用して、デバッグを強化します。 。で停止します
結論docker-compose.yml
Dockerには初期セットアップが必要ですが、信頼できる分散性コードの長期的な利点は重要です。 このチュートリアルは基本をカバーしています。高度な使用法のためのさらなるリソースを調べてください。 画像は簡潔に保持されています。
以上がdockerでnode.jsを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。