💡

Dockerを使った、サクッと作ってパッと捨てられるNode.js環境

2021/03/13に公開

待ちに待った Windows 10 May 2020 Update(WSL2)もリリースされ、Windows への Docker の敷居も下がってきそうです。
そこで、Docker で作る使い捨てやすい Node.js の開発環境についてまとめておこうと思います。

Why NodeJS with Docker 🤔

※前置きです(読み飛ばし可)

現状のバージョン管理方法

  • Mac (メイン)
  • Windows (サブ)
    • 漢らしくzip を解凍してパスを通す
      • nvmがあるのは知っていましたが、~~バージョン指定するほどの開発もしてなかったため、~~入れるのが手間で。。。

不満 🙃

  • コマンド覚えるのが苦手なので、逐一調べるのが億劫。
    (たまにしか使わないコマンドなので尚更。。。)
    • 新しいバージョンいれたり、古いバージョン消したり、、、
  • Windows と Mac で導入手順やコマンドが違う
    (社内で布教サポートがしづらい)
  • package.jsonの script を Windows,Mac 考慮しながら書くの辛い。
  • package-lock.jsonがたまにプラットフォーム(OS)によって変わるため、
    別 OS で作った環境でnpm installするとコケることがある。

解決策

同じ OS 上で Node.js を実行させればいいのでは?🤔
  → Docker 使おう 💡

※よく手順で出てくるDockerfiledocker-compose.ymlは、コンテナが残ってしまって後始末がめんどくさいので、コンテナが残らない手順にしています。

--ここから本編です--

前提

  • Docker がインストールされていること

Docker イメージの取得

docker hub の公式イメージから任意のバージョンの Docker イメージを取得する。
※ alpine 系がイメージサイズが小さいためオススメ。

console
% docker pull node:14-alpine

※ この手順は省略可(後で docker run するタイミングで、イメージ未取得の場合は自動取得してくれるため)

Node コマンドの実行

基本以下ルールで実行するだけです。

  • ローカルのディレクトリを Docker コンテナの好みの場所(/home/nodeとか?)にマウントする
  • マウントしたディレクトリを作業ディレクトリに指定する
  • サーバ機能を利用する場合は、必要なポートのマッピングを行う
example
# 作業用ディレクトリ作成
% mkdir workdir
% cd workdir
# プロジェクトの初期化
% docker run --rm -it \
%   -v "$PWD":/home/node/app \ # マウントの設定
%   -w /home/node/app \ # 作業ディレクトリの指定
%   node:14-alpine \ # イメージの指定
%   npm init -y # コンテナ内で実行したいコマンド
# モジュールのインストール
% docker run --rm -it \
%   -v "$PWD":/home/node/app \
%   -w /home/node/app \
%   node:14-alpine \
%   npm install --save-dev http-server
# 実行(ポートマッピング追加)
% docker run --rm -it \
%   -v "$PWD":/home/node/app \
%   -w /home/node/app \
%   -p 8080:8080 \ # ポートマッピング
%   node:14-alpine \
%   npx http-server

後始末

  • コンテナは残っていないため掃除不要
  • 不要になったイメージは定期的にガーッと削除しましょう

以上です。

GitHubで編集を提案
株式会社ナンバーフォー

Discussion