0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

volumes で node_modules が消える問題を解決!

Posted at

🚀 Docker の volumesnode_modules が消える問題を解決!【開発者向け】

🎯 はじめに

Docker を使って React や Node.js のプロジェクトを動かしていると、

volumes:
  - ../frontend/admin:/app
  - /app/node_modules

のような volumes 設定をしたときに、

コンテナは起動するのに node_modules が空!
npm install しても何も入らない!

こんな ハマりがち な問題にぶつかったので、
その原因と 確実に node_modules をインストールする方法 をまとめました!🚀


🔍 node_modules が消える原因

この問題は volumes のマウントの仕組み によるもの。

以下の volumes 設定を見てみましょう。

volumes:
  - ../frontend/admin:/app
  - /app/node_modules

この場合、/app/node_modules空のボリューム がマウントされる ため、
npm install しても 何もインストールされない

Docker の volumes は、指定されたパスに何もない場合、
空のディレクトリを作成してコンテナのディレクトリを上書き してしまう。

🚨 つまり…

  • node_modules をインストールしても、/app/node_modulesvolumes によって上書きされて空になる!

✅ 正しい volumes の設定方法

node_modulesコンテナ内で管理 したい場合、

方法① node_modulesvolumes を削除する

volumes:
  - ../frontend/admin:/app  # `node_modules` のマウントをしない!

この場合、コンテナの /app/node_modules はそのまま維持され、正常に npm install される。


方法② tmpfs を使って node_modules をコンテナ内で保持

開発環境で ホットリロードを使いつつ、node_modules を維持したい 場合は tmpfs を使うのがベスト。

services:
  app:
    image: my-app
    volumes:
      - ../frontend/admin:/app  # ソースコードは同期
    tmpfs:
      - /app/node_modules  # `node_modules` はコンテナ内で管理

メリット:

  • node_modulesホストと同期しない ので、依存関係が壊れない。
  • ソースコードは ホストと同期 するので、ホットリロードは有効。

🔄 volumes の確認方法

もし「本当に volumes のせいで node_modules が空になってるの?」と思ったら、
Docker の inspect コマンドで確認できます。

docker inspect <コンテナID> | grep node_modules

また、コンテナに入って node_modules の状態を確認するのも有効。

docker exec -it <コンテナID> sh
ls -la /app/node_modules

node_modules が空になっているなら、volumes のせい!


🎯 まとめ

volumes/app/node_modules を指定すると node_modules が消える
開発時は volumes から node_modules を除外 or tmpfs を使う
docker inspectexecnode_modules の状態を確認できる

もし node_modules が消えてしまって困っているなら、
volumes の設定を見直してみよう! 🚀


📝 参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?