はじめに
Docker環境下でNuxt開発をしている際に、docker-composeでyarnを用いてパッケージをインストールすると、とてもノロノロになってしまっていたので、それを解決しました。
原因
node_modulesをバインドマウントしていたから。ホストとdockerコンテナ内で相互に連携しないといけないので、時間がかかっていた。
解決策
node_modulesだけバインドマウントから外して、volumeマウントにする。通常のバインドマウントの後にnode_modulesだけvolumeマウントにすることで、node_modulesをバインドマウントから外せる。
例↓
docker-compose.yml
# (略)
front:
build:
context: ./front
environment:
NODE_ENV: "development"
command: yarn run dev
volumes:
- ./front:/app # ホストとdocker内部でプロジェクトのソースコードを共有するためにバインドマウント
- node_modules_volume:/app/node_modules # node_modulesはホストと共有しないでvolumeマウント
ports:
- 8080:8080
volumes:
node_modules_volume:
最後に
node_modulesに限らず、railsのgemの管理にも応用できました(docker環境下でのbundle installの高速化)