Dockerでnodejsアプリケーションを構築する方法

この記事では、Dockerコンテナ化を使用してNodeJSアプリケーションを構築する方法を説明します。 Dockerでは、アプリケーションをコンテナとしてパッケージ化および実行できます。

今日は、ソフトウェア開発ツールに関する一連のチュートリアルを開始しています。また、この最初の記事では、dockerを使用してnode.jsアプリケーションをコンテナ化する方法について説明します。 Dockerは、開発者がコンテナとしてアプリケーションをパッケージ化および実行するのに役立ちます。コンテナは孤立したプロセスであり、仮想マシンの軽量な代替品であるためです。この記事では、Dockerコンテナ化を使用してNodeJSアプリケーションを構築する方法について説明します。始めましょう!

Dockerとは何ですか

Dockerは、OSレベルの仮想化を使用してコンテナと呼ばれるパッケージでソフトウェアを配信するサービス製品としてのプラットフォームのセットです。アプリケーションを開発、出荷、および実行するためのオープンプラットフォームです。 Dockerを使用すると、アプリケーションをインフラストラクチャから分離して、ソフトウェアをすばやく配信できます。 Dockerは、クライアントサーバーアーキテクチャを使用しています。 Dockerのクライアントは、Docker Daemonと話し合います。DockerDaemonは、Dockerコンテナの建物、走行、配布の重いものを行います。 Dockerクライアントとデーモンは、REST API、UNIXソケット、またはネットワークインターフェイスを使用して通信します。これがDockerアーキテクチャの図です。

Dockerアーキテクチャ

前提条件

  • ubuntuサーバー
  • サーバーにインストールされているDocker
    • node.js npmインストール

node.jsアプリケーションをセットアップします

画像を作成するには、最初にアプリケーションファイルを作成する必要があります。これをコンテナにコピーできます。これらのファイルには、アプリケーションの静的コンテンツ、コード、依存関係が含まれます。 まず、非ルートユーザーのホームディレクトリにプロジェクトのディレクトリを作成します。次に、作成した新しいフォルダーで以下のコマンドを実行します。

npm init -y
npm i -s express

上記のコマンドは、依存関係としてインストールされたExpressフレームワークを備えたnode.jsアプリケーションを設定します。次のコードを app.js ファイルに追加しましょう。

const express = require(‘express’);
const app = express();
app.get(‘/’, function(req,res){
  res.send(“Hello World”);
});
const port = 3000;
app.listen(port, function () {
  console.log(‘Listening on port 3000!’)
})

ノードapp.jsでアプリケーションを開始します

node app.js

ブラウザをhttp:// \ _server \ _ip:3000に移動します。次のランディングページが表示されます。 これで、アプリケーションが稼働しています。次に、このアプリケーションを再作成および拡張できるDockerFileを作成するために進むことができます。

dockerfileを書きます

Dockerfileを使用して、アプリケーションコンテナが実行されたときに何を含めるかとコンテナ環境を指定できます。 まず、プロジェクトのルートで次のコマンドを備えたDockerFileを作成します。

vi Dockerfile

次の from 命令を追加して、アプリケーションのベース画像を設定します。

FROM node:12-alpine

{{LINE_43}} {{LINE_44}} Docker画像に属していないファイルを削除するために、.dockerignoreファイルを追加できます。 {{LINE_46}} {{LINE_47}} node_modules subdirectory in /home /nodeをApp Directoryとともに作成しましょう。これにより、必要なアクセス許可が確保されます。これは、NPMインストール付きのコンテナにローカルノードモジュールを作成するときに重要になります。

...
RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app

次に、アプリケーションの作業ディレクトリを/home/node/appに設定します。

...
WORKDIR /home/node/app

次に、package.jsonとpackage-lock.jsonをコピーし、プロジェクトファイルを非ルートユーザー「ノード」に割り当ててから、NPMインストールを実行します

...
COPY package*.json ./
USER node
RUN npm install

コンテナのアプリケーションディレクトリに適切な権限を使用してアプリケーションコードをコピーします

...
COPY --chown=node:node . .

コマンドを公開するためにポートを公開する:

...
EXPOSE 3000
CMD [ "node", "app.js" ]

dockerfileの最終バージョンは次のようになります。

FROM node:12-alpine
RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app
WORKDIR /home/node/app
COPY package*.json ./
USER node
RUN npm install
COPY --chown=node:node . .
EXPOSE 3000
CMD [ "node", "app.js" ]

画像を構築し、コンテナを実行します

次のコマンドを実行して、Docker画像を生成します

docker build -t <<image_name>> .

これにより、_Docker Image_が生成されます。これは、Docker Imagesコマンドを使用して確認できます。次のコマンドを使用して、この画像でコンテナを作成することが可能になりました。

docker run — name <<container_name>> -p 3000:3000 -d <<image_name>>

これにより、Docker PSコマンドを実行して確認できるコンテナが起動します。ここでブラウザでhttp:// localhost:3000にアクセスすると、node.jsアプリが実行されています。しかし、今回はDockerコンテナから実行されています。

結論

Dockerコンテナを使用した開発は非常にシンプルで簡単です。 Dockerは、開発者がコンテナとしてアプリケーションをパッケージ化および実行するのに役立ちます。このチュートリアルでは、ubuntuでdockerコンテナを使用してnode.jsアプリケーションを構築する方法を学びました。今後の記事では、Dockerのより多くの用途について執筆し、他のツールについても説明します。

探検