# もっと Docker 使おうよ!Node を Docker から引っ張ろうよ

Mac のローカル環境で Docker 経由で Node.js をバージョン別に自由切り替えできるようにしたい!
今まで、PHP の開発でよく使っている sail と composer を Docker コマンドの alias 貼って使っていますが、Node は Nodebrew つかってバージョン管理しています。Nodebrew が不便なわけではないけど、Node も Docker から引っ張って使うようにしたらどうかなとやってみました。

Composer の alias

alias sail='[ -f sail ] && sh sail || sh vendor/bin/sail'
alias composer='docker run --rm -itv $PWD:/app composer:2.7.1'

# alias を貼る

~/.zshrc~/.bashrc などに alias を設定する

alias node18="docker run --rm -it -v $(pwd):/app -w /app node:18 bash"
alias node20="docker run --rm -it -v $(pwd):/app -w /app node:20 bash"
alias node22="docker run --rm -it -v $(pwd):/app -w /app node:22 bash"
alias node24="docker run --rm -it -v $(pwd):/app -w /app node:24 bash"

使い方

node18  # Node.js 18を起動
node20  # Node.js 20を起動
node22  # Node.js 22を起動
node24  # Node.js 24を起動

# npm と yarn などのコマンドに影響するので修正

npm Yarn など他のコマンドもコンテナ内のものが使われる ため、ローカル環境の yarn とは別物で、同じように alias 貼る必要があります。

alias node18="docker run --rm -it --entrypoint node node:18"
alias yarn18="docker run --rm -it --entrypoint yarn node:18"
alias node20="docker run --rm -it --entrypoint node node:20"
alias yarn20="docker run --rm -it --entrypoint yarn node:20"
alias node22="docker run --rm -it --entrypoint node node:22"
alias yarn22="docker run --rm -it --entrypoint yarn node:22"
alias node24="docker run --rm -it --entrypoint node node:24"
alias yarn24="docker run --rm -it --entrypoint yarn node:24"

これでバージョン別で自由に切り替えできるコマンドチームができました。
けど、NVM や nodebrew を使うより、どちのほうが便利かな。。。

# Node.js 公式推薦のバージョン管理方法

何言っても公式は最強ですね。Node 公式では NVM を使うこと推薦されています。

# nvmをダウンロードしてインストールする:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash

# Node.jsをダウンロードしてインストールする:
nvm install 22

# Node.jsのバージョンを確認する:
node -v # "v22.14.0"が表示される。
nvm current # "v22.14.0"が表示される。

# npmのバージョンを確認する:
npm -v # "10.9.2"が表示される。
2025-02-22
  • javascript

関連記事

Javascript 非同期処理 async と await のメモ
javascript  指定場所にスムーズにスクロールする方法
Nuxt.js と Ant Design Vue 2 テーマカスタマイズ
react 強制的にレンダリングする方法
JavaScript ライブラリ aos.js 使ってスクロール連動アニメーション
Jsconfig と Tsconfig
Cookie localStorage sessionStorage の違い
Javascript var let const 変数宣言の違い
Javascript 電話番号フォーマット
国際化 i18n と地域化 L10N
大きいファイルをスライス分割してアップロード
javascript 文字列と配列検索 indexOf findIndex find some includes 関数の違い
Javascript DataTables で excel 風 table 作る
javascript 配列 重複排除
vuejs back to top button component 作成
bootstrap vuejs 使って generate する際に babel が icons ファイル max 500KB エラー
Nuxtjs 動的なルーティング静的ページ自動生成
キーコード取得 & キーコード一覧
Sweet Alert swal に複数 content
moment.js 使って日本語曜日対応
javascript 開発で出会った TypeError
開発時によく使うゼロ埋めパディング作業まとめ
ReferenceError: location is not defined
vuejs で omisejapan の決済フォーム作成した時のメモ
ブラウザーで動く javascript のクッキー操作ライブラリ js-cookie
javascript reduce 連想配列の合計計算覚えよう
nuxtjs と codeigniter で jwt システム構築
nodejs 使う時のエラーたち
javascript で作る html から PDF 変換 pdfmake の日本語対応
javascript 楽しく遊ぼう!メッセージつぶやくウシ cowsay
Javascript vuejs の validation 正規表現でフォームチェック作ったときのメモ
正規表現一覧 よく使う検索・置換のパターン
javascript password generator ランダム文字列パスワード作成
javascript 日本語 shift-js 対応 CSV ダウンロード
開発におけるコーディングルール・規約