Docker で Node.js アプリケーションをコンテナ化する方法

Docker で Node.js アプリケーションをコンテナ化する方法

コンテナ化されたアプリケーションは、ほぼすべてのプロジェクト チームが直面する主要な問題のいくつかを解決できるため、今日の世界でますます人気が高まっています。

この記事では、Docker を使用して node.js アプリケーションをコンテナ化する方法について説明します。続行する前に、コンピューターに Docker がインストールされていることを確認してください。

ドッカー: https://www.docker.com/products/docker-desktop

インストール プロセスが完了したら、Docker Desktop を開き (バックグラウンドで実行したままにします)、docker version を実行してインストールが完了したことを確認します。

このチュートリアルでは、依存関係の少ない基本的な node.js アプリケーションを使用していますが、プロジェクトでは、私のものよりも依存関係が多い高度な node.js アプリケーションを使用している可能性があります。

まず、app.js ファイルを見てみましょう。

  1. 定数express は ('express')を必要とします
  2. const app = express ();app.listen(3000, () = > {
  3. console.log('ポート3000でリクエストをリッスンしています');
  4. });app.get('/', (req, res) = > {
  5. console.log('リクエストが作成されました');
  6. res.send('Hello World!');
  7. });

ここで私が行ったことは、基本的に、Express を使用して単純な node.js サーバーを作成することです。ただし、次のようにして、Express node.js サーバーを使用しないことを選択することもできます。

  1. 定数http = require ('http');
  2. const server = http .createServer(req, res) = > { console.log('リクエストが作成されました');
  3. // ここでレスポンスを設定する
  4. res.setHeader('Content-Type', 'text/plain');
  5. res.write('Hello World!');
  6. res.end();});server.listen(3000, '0.0.0.0', () = > {
  7. console.log('ポート3000でリクエストをリッスンしています');
  8. });

package.json は次のようになります。これは基本的な package.json ファイルなので、これ以上の依存関係は含まれません。しかし、あなたの場合は私よりも多くの依存関係を持つ可能性があります。

さて、次は Dockerfile を作成します。簡単です。フォルダー内に新しいファイルを開き、Dockerfile という名前を付けます。好きなテキストエディタを使用して作成できます。以下に、このプロジェクトで使用した Dockerfile を示します。必要に応じて編集できます。

  1. ノード:10から
  2. // プロジェクトに必要なイメージ名を指定します
  3. ワークディレクトリ /usr/src/app
  4. // 作業ディレクトリのパスを設定する
  5. COPY package*.json //package.jsonとpackage-lock.jsonの両方をコピーします
  6. npmインストールを実行
  7. // すべての依存関係をインストールします
  8. コピー 。 。
  9. // プロジェクト内の他のすべてのファイルをコピーします
  10. エクスポーズ3000
  11. // アプリケーションが実行されているポートを公開する
  12. コマンド ["ノード", "app.js" ]
  13. // ここでアプリケーションを実行するコマンドを入力できます

すべての準備が整ったので、Dockerfile を使用して Docker イメージをビルドできます。ターミナルを開き、次のコマンドを実行して Docker イメージをビルドします。ターミナルでパスがプロジェクト フォルダーに設定されていることを確認します。

  1. docker ビルド 。 -t こんにちは世界

注: hello-worldはdockerイメージの名前です

これには、Docker Hub から Node イメージをプルし、Dockerfile に記載されているすべての手順を実行する必要があるため、時間がかかる場合があります。プロセスが完了したら、この Docker イメージからコンテナを構築できます。次のコマンドを実行し、ポート マッピングが正しく行われていることを確認します。

  1. docker run -p 8080:3000 --name c1 hello-world

注: 好みのポートを選択できます。ポート 8080 はローカル マシンに属し、アプリケーションはポート 3000 で実行され、c1 はコンテナーの名前、hello-world は Docker イメージです。

これでコンテナの実行が開始され、ブラウザでアプリケーションを表示できるようになります。これを実行する前に、ターミナルで docker ps を実行し、コンテナが実行されていることを確認してください。確認したら、ターミナルで docker port c1 (ここで、c1 はコンテナの名前) コマンドを発行してポートを確認することもできます。

  1. docker ポート c1
  2. >> 3000 /tcp - > 0.0.0.0:8080

ブラウザを開いて localhost:8080 と入力すると、ブラウザに node.js アプリケーションの応答が表示されます。

要約する

おめでとう! Docker を使用して Node.js アプリケーションのコンテナ化が完了しました。

これらの概念をよく理解しておくことが最善であり、Docker を使用してアプリケーションをコンテナ化してみることも忘れないでください。

<<:  ハイブリッドクラウドとコロケーションデータセンターが持続可能なIT運用を実現する方法

>>:  SalesEasyのShi Yanzeが[2020年中国デジタルエコシステムSaaSリーダー]賞を受賞

推薦する

年次会議について:利益を追求する会議業界チェーン

北京の東三環路と東四環路の間に位置するワンダソフィテルホテルは、最近非常に賑わっています。11月2日...

大容量メモリ: LetBox-$7/Kvm/4g メモリ/30g SSD/5T トラフィック/G ポート/DDoS 保護

実際のリソース需要がそれほど高くなく、トラブルを避けたいだけなので、より良いサービスを受けるために販...

ウェブサイトの重みの効果的な集約の成功と偶然ではない最適化

体重は、ウェブマスターにとって愛するものでもあり、嫌うものでもあります。体重が急激に増えたときは喜ば...

northhosts-10 ポンド/年/512MB メモリ/30GB ハードドライブ/2TB トラフィック/英国

northhosts.co.uk は英国に登録されたホスティング会社です。公式ウェブサイトの下部に、...

流行下で、ライブ放送は再びホットスポットになった

新型コロナウイルス感染症の流行により、ほとんどの人が自宅待機を余儀なくされている。この流行は多くの業...

Hostkvm: 香港の高帯域幅VPS(1Gbps帯域幅、モバイルCMI回線)の簡単な評価

Hostkvm は、香港国際ゾーン B に新しい VPS カテゴリを追加しました。実際、現在は中国移...

変化に直面しても変わらぬ姿勢: 高品質のオリジナルコンテンツを最優先

まず、検索エンジンの観点から考えてみましょう。検索エンジンの顧客は誰ですか?彼らは、Baidu のキ...

万家ショッピング、1兆ドル規模の「リベート市場」に関わる反ダンピングで閉鎖の可能性

買い物中にお金を節約できると主張するキャッシュバックウェブサイトはかつては非常に人気があったが、現在...

pqhosting: セルビア VPS、無制限のトラフィック (1Gbps 帯域幅)、わずか 3.77 ユーロから

pq.hosting は、南東ヨーロッパのバルカン半島の中心であるセルビアに独自のホスティング マシ...

100PB以上!アリババクラウド、インターネット史上最大のパブリッククラウド移行の完了を発表

中国の大手クラウドストレージ企業である115 Technologyは6月7日、2018 Yunqi ...

5 つのベスト プラクティスでマルチクラウド ガバナンスの課題を軽減

マルチクラウド モデルを採用すると、クラウド チームにとってさらなる複雑さと管理上の課題が生じ、設計...

高級品サイト、商品の真贋判別困難で次々に閉鎖

数万元もする高級品が、一夜にして40%や50%も値引きされることもある。こうした値引きは間違いなく魅...

A5会議:朱朗CMSが開発した8つの武器を解読

1年前、彼はまだあなたとHTCとサムスンのどちらの携帯電話が優れているか議論したり、顧客を会社の階下...

検索エンジンを悪用するSEO担当者の4つのタイプの分析

自分のサイトが検索エンジンによってペナルティを受けたときは、まず自分のサイトがなぜペナルティを受けた...

基礎ゼロで主流のAPPアプリケーション市場チャネル運用戦略をマスター

この記事では、アプリストアでの有料CPDプロモーションについて紹介し、主にApp Store 、Hu...