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リーダー]賞を受賞

推薦する

SEO の段階的な発展の傾向はどこにありますか?

1. SERP機能の台頭以前は、オーガニックランキングができるだけ多くのトラフィックを獲得する方法だ...

電子書籍プロモーションのオンライン実践

世界の科学技術の急速な発展に伴い、インターネットはもはや一つの地域や一つの国に限定されず、世界のあら...

NetEase Communityはサービスを停止すると発表し、担当者はNetEaseのフォーラムではないと述べた。

シャットダウンのお知らせ新浪科技報は11月15日夜、網易コミュニティ(club.163.com)が本...

URL 静的化の本当の目的は何ですか?

現在、ウェブサイトを作成する人なら誰でも、静的ウェブサイトの方が動的ウェブサイトよりも優れていること...

オラクルがマルチクラウド管理プラットフォームを発表

[51CTO.com クイック翻訳] マルチクラウドの管理と監視の分野はすでに非常に混雑していますが...

Takewyn: ウクライナの 1Gbps 専用サーバーが月額 15 ドルから

ウクライナのホスティング会社 takewyn (2009 年に設立され、ドニエプル川に独自のデータ ...

アリババは何を見逃したのでしょうか?

2015年5月初旬、アリババの経営幹部交代のニュースが飛び交った。株価が80ドルを下回った後、アリバ...

音楽ウェブサイトのSEO最適化の方法についての簡単な説明

音楽ウェブサイトの SEO 最適化は比較的簡単です。各曲のタイトルがキーワードとなっており、曲名から...

vpslices-$3.5/モスクワ/2g メモリ/100g SSD/5T トラフィック/著作権フリー ホスティング

vpslicesは5月中旬にイギリスで登録された会社で、現在はモスクワとニュージャージーの2つのデー...

クラウドで競争上の優位性とコスト削減を実現する方法

クラウド コンピューティング サービスの導入は依然として複雑です。アクセンチュアの調査によると、クラ...

適切なハイブリッドクラウド管理アプローチを選択する方法

ハイブリッド クラウド管理 (HCM) 市場は最近まで停滞していましたが、最近になって状況は一変しま...

ウェブマスターの皆さん、現状に直面しても前進できますか?

最近、多くのブロガーが去っていくのを見ました。グループでチャットしているとき、彼らは次のように話して...

クラウドサービスと仮想化データセンターの可視化(パート1)

今日の IT 組織は前例のない課題に直面しています。企業内のビジネス部門は、外部のセキュリティ脅威や...

百度ホームページでトップ3にランクインするのは夢ではない

ウェブサイトのランキングは長期的な課題です。Baidu のホームページにランクインしているウェブサイ...