Node.js で作成した REST API を Docker化

Node.js で作成した REST API を Docker化

2021-08-086 min read

目次

  1. 概要
  2. nodejsでrest-apiを作成
  3. コンテナ化
  4. 参考

概要

Node.js で作成した REST API を Docker化した際のメモです。

Node.jsでREST APIを作成

まずはNode.jsでアプリケーションを作成します。

次のようにディレクトリ/ファイルを作成します。

app
├── Dockerfile # コンテナ
├── index.js # APIのソース
└── package.json

package.jsonに次のように記載します。

{
  "name": "docker-nodejs-api",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "author": "hoge",
  "license": "MIT",
  "dependencies": {
    "express": "^4.17.1"
  }
}

index.jsにREST APIを実装します。

'use strict';

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  const param = {
    'msg': 'Hello World!',
  };
  res.header('Content-Type', 'application/json; charset=utf-8');
  res.send(param);
});

app.listen(8080, '0.0.0.0');

これは単純に {"msg": "Hello World!"} を返すAPIです。

これでAPIの作成部分は完了です。

コンテナ化

コンテナ化定義

Dockerfileに次の内容を記載します。

FROM node:12

WORKDIR /usr/src/app

# アプリケーションの依存関係をインストールする
COPY package*.json ./

RUN npm install

# アプリケーションのソースをバンドル
COPY . .

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

.dockerignoreにコンテナに含まないファイル/ディレクトリを定義します。

node_modules

コンテナ化作業

次のコマンドでコンテナイメージをビルドします。

docker build . -t test/node-rest-api

ビルドが完了すると、docker imagesからイメージを確認することができます。

$ docker images
test/node-rest-api

次のコマンドでコンテナを開始します。8080ポートを8081ポートにバインドしたので、ブラウザから8081ポートで叩くとアクセスすることができます。

docker run -p 8081:8080 -d test/node-rest-api

参考

Node.js Web アプリケーションを Docker 化する

Author
githubzennqiita
ただの備忘録です。

※外部送信に関する公表事項