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

推薦する

知っておくべきクラウドネイティブツール13選

SUSEがRancherを買収ピュア・ストレージがポートワークスを買収Veeam が Kasten ...

テンセントとネットイースは秘密戦争中。ネットイースの元ゲーム幹部、魏建宏が警察に連行される

文/王静5月30日、広州オプティマスプライムネットワークテクノロジー株式会社(以下、「オプティマスプ...

ウェブサイトのコンテンツ管理者が考慮する必要がある SEO の問題

一般的に、頻繁にコンテンツのメンテナンスが必要なウェブサイトは、企業ウェブサイトだけではありません。...

Namecheap の新学期特別セール: ドメインは年間 3.8 ドルから、ホスティングは年間 12 ドルから

Namecheap では、9 月 15 日まで特別な新学期プロモーションを実施しています。 (1) ...

周紅一:携帯電話と検索は避けられない戦争だ

おそらく数十年後のある日、批評家たちは周紅一点(Weibo)を次のように評するだろう。「周紅一点氏の...

オープンソースのクラウドネイティブ分散ファイルシステム - JuiceFS

最もよく知られている分散ファイルシステムは HDFS です。その正式名称は​Hadoop Distr...

gatenode-4$/Xen/512m メモリ/30g ハードディスク/2T トラフィック/フェニックス シティ/サイト全体で 50% 割引

gatenode は、電話番号とオフィスの住所が記載された非常にシンプルな Web サイトです。他に...

ウェブマスターネットワークからの毎日のレポート:タオバオはキャッシュリベートを禁止し、ウェイボーはブログの古い道をたどる

1. 191億元の熱狂が引き起こしたビジネス投機:伝統的なチャネルが反撃荷物が次々と目的地に到着する...

おすすめ: WattaServer - 超格安サーバー/11 台のコンピュータ ルーム/35 ドルから (L5420)

Host Cat は、卸売インターネットよりも価格性能比に優れたサーバー業者 WattaServer...

今年、曲頭条で何が変わり、何が変わらなかったのか

最近、四半期の収益は前年同期比44%増加し、四半期の平均デイリーアクティブユーザー数は前年同期比97...

SARFT、インターネットテレビを抑圧する大規模な動きを開始

本日のメディアは、国家ラジオ映画テレビ総局が昨日、インターネットテレビの違反行為を是正するよう要求す...

SAP、2022年第3四半期の業績を発表

クラウドビジネスの成長は加速し続けており、特に中国市場は好調である。クラウド収益は38%と25%増加...

クラウドコンピューティングとビッグデータは業界標準となっている

大学や研究機関が毎年独自にプロジェクトを開発することから始まり、オープンソースを通じてソースコードを...