npmをローカルにインストールせずに、Dockerだけでnpm init
やnpm install
をする方法を解説します。
npm init
まずは、ディレクトリを作成して中に移動します。
mkdir app && cd app
次に、dockerを使ってnpm init
します。以下のコマンドを実行してください。実行するとpackage.json
が生成されます。
docker run --rm -w "/usr/app" -v "${PWD}:/usr/app" node:15.3-alpine npm init -y
コマンドの解説をします。
docker run <IMAGE>
は、イメージをコンテナ化するコマンドです。今回はnode:15.3-alpine
を指定しています。これは、公式のイメージで、ローカルになければコマンドを実行したときにインストールされます。
--rm
オプションは、コンテナの終了時に自動的にそのコンテナを削除します。詳しくはこちらに書いてあります。
-w
オプションでワーキングディレクトリを指定しています。システムの邪魔にならなければどこでもいいですが、今回は/usr/app
としました。
-v
オプションは、マウントをします。今回は、${PWD}:/usr/app
としているので、現在のディレクトリを/usr/app
にマウントすることになります。こうすることで、npm init -y
を実行して、/usr/app
内に生成されるpackage.json
を現在のディレクトリに反映させることができます。
最後の引数は、実行したいコマンドです。
npm install
上記と同じように以下のコマンドを実行します。例としてexpressをインストールしてみました。実行するとpackage-lock.json
やnode_modules
が生成されます。
docker run --rm -w "/usr/app" -v "${PWD}:/usr/app" node:15.3-alpine npm install express
Dockerを使うことで、npmをインストールせずに使うことができました。