Node.js 実行環境 Docker コンテナ化

今回は、Dockerのコンテナ上で、簡易的なNode.jsのhttpサービス動作させて、

ホストOS側からhttpアクセスしてみた時のメモとなります。

挙動確認用 JavaScriptファイル作成

まず、動作確認用のjsファイルを作成します。

今回は、以下の配置でjsファイルを作成します。

プロジェクトフォルダ/src/index.js

const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World');
}).listen(3000, '0.0.0.0');

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

動作確認用に基本設定として、hostを127.0.0.1に、portを3000に割り当てました。

シンプルにHello Worldという文字列を返却します。

 


package.json 作成

続けてpackage.jsonを作成します。

今回は、プロジェクトフォルダの直下に作成します。

{
    "name": "docker_node_app",
    "version": "1.0.0",
    "description": "Node.js on Docker",
    "main": "index.js",
    "scripts": {
      "start": "node index.js"
    }
}

動作用のjsファイル名を、最初に呼ばれるjsファイルとして(main)指定します。

後述のDockerfileにて、DockerコンテナOS内では、

index.jsと同様のディレクトリにpackage.jsonを配置する想定のため、

ファイル名のみの指定を行っています。

異なるディレクトリに配置する場合は、相対パスで指定可能です。

npm – package.json –

 


Dockerfile 作成

次に、Dockerfileを作成します。

Dockerfileも、今回はプロジェクトフォルダの直下に作成します。

FROM node:12

# アプリケーションディレクトリ 作成
WORKDIR /usr/src/app

# jsファイル、package.jsonをアプリケーションディレクトリに配置
COPY package.json /usr/src/app
COPY src/* /usr/src/app

# アプリケーション依存関係インストール
RUN npm install

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

 


Docker イメージ ビルド

各ファイル準備ができたら、Dockerイメージをビルドします。

Dockerfileの存在する場所で、docker buildコマンドを実行します。

docker build -t コンテナ名:タグ .

docker build -t node_debug:latest .

 


Docker コンテナ作成

ビルドも完了したら、コンテナ作成してサービスを起動します。

docker run -p ホストOS側ポート番号:コンテナOS側ポート番号 -d コンテナ名:タグ

docker run -p 8080:3000 -d node_debug:latest

ホストOS側で確認を行うために、ポートマッピングの指定をして実行します。

実行すると、コンテナIDが表示されますので、

コンテナ終了時などの指定に利用します。

 


挙動確認

ブラウザ等で確認を行います。

localhost:8080といった感じに、割り当てたポート番号を指定してアクセスします。

Hello Worldの文字列が表示されれば、正常にアクセスできています。

動作確認まで完了したら、docker stop コンテナID等で停止します。

 


 

今回のメモは以上となります。

必ずDockerである必要はありませんが、

比較的簡単に、挙動確認できる環境を作成できるので便利です。

また、挙動確認をする際に、

ステップ実行などのデバッグもできると便利だと思いますので、

デバッグ設定についても今後メモしていきたいと思います。


------------------------------------------ スポンサーリンク ------------------------------------------
都内でエンジニアをやっています。 2017年に脱サラ(法人設立)しました。 仕事で調べたことや、気になったことをメモしています。
投稿を作成しました 127

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


関連投稿

検索語を上に入力し、 Enter キーを押して検索します。キャンセルするには ESC を押してください。

トップに戻る