💡
Dockerを使った、サクッと作ってパッと捨てられるNode.js環境
待ちに待った 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 使おう 💡
※よく手順で出てくるDockerfileやdocker-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
後始末
- コンテナは残っていないため掃除不要
 - 不要になったイメージは定期的にガーッと削除しましょう
 
以上です。
Discussion