💡
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