Dockerだけでnpm initやnpm installをする方法


npmをローカルにインストールせずに、Dockerだけでnpm initnpm 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.jsonnode_modulesが生成されます。

docker run --rm -w "/usr/app" -v "${PWD}:/usr/app" node:15.3-alpine npm install express

Dockerを使うことで、npmをインストールせずに使うことができました。