😊
Dockerコンテナ内でnpmコマンドがやたらと遅い時にやってみること
はじめに
Nuxtの開発環境を作ろうとDocker内にNuxtのプロジェクトを作成し、ホスト上(今回はWindows)のフォルダをコンテナにマウントして作業しようとした場合、npm run dev
コマンド等がやたらと遅く作業に支障が出る場合、以下を試してみると速度が上がるかもしれません。
名前付きボリュームを使う
以下のようにnode_modules
の部分に名前付きボリュームを使用し、コンテナ内のみで取り扱うようにすると速度が改善されます。名前付きボリュームを使用しないと、大量のファイルをホストと同期し続ける必要があるためパフォーマンスに影響が出るようです。
version: "3.7"
services:
app:
build:
context: .
dockerfile: Dockerfile
container_name: node
ports:
- "3000:3000"
volumes:
- ./app:/app
- node_modules:/app/node_module
stdin_open: true
tty: true
environment:
- HOST=0.0.0.0
- CHOKIDAR_USEPOLLING=true
volumes:
node_modules:
具体的な設定の流れ
Nuxtの開発環境を構築後、以下の手順を実行すればnode_modules
はコンテナ内で管理されるようになります。
- とりあえず名前付きボリュームを設定せずコンテナを立ち上げる
-
npx-create-nuxt-app
でプロジェクトを作成する - コンテナを落とす
- 名前付きボリュームを設定する
- ホスト側に存在する
node_modules
は使用しないので削除してもよい - コンテナを立ち上げる
-
npm install
を実行し、新しいnode_modules
に各種ライブラリをインストールする
まとめ
ホスト上(今回はWindows)のフォルダをコンテナにマウントして作業する再、npm run dev
等がやけに遅いなぁと感じたら、node_modulesを名前付きボリュームで管理するようにするといいかもしれません。
Discussion