Day5:開発効率化(マウント)前半
前半の核心は「マウント=ホストのフォルダをコンテナに映し込み、コード変更を即反映させる仕組み」であることです。ホットリロードの土台になる重要概念です。
テーマ:マウントの本質を理解し、“コード変更→即反映”の開発体験を手に入れる
マウントとは何か
ホストのフォルダを“そのまま”コンテナに映し込む仕組み
Docker コンテナは本来、ホストとは完全に独立した世界です。
そのため、普通にコンテナを起動すると:
- ホストでコードを変更してもコンテナには届かない
- コンテナ内で変更してもホストには反映されない
という状態になります。
これでは開発が非常に不便です。
そこで登場するのが マウント(bind mount) です。
検索結果でも「ホストのフォルダをコンテナのフォルダとして使える魔法のような仕組み」と説明されています。
docker run -v $(pwd):/app node の意味
コマンドを分解して理解する
docker run -v $(pwd):/app node
これは次の意味になります。
- $(pwd):ホスト側の“現在のフォルダ”の絶対パス
- /app:コンテナ内でそのフォルダをマウントする場所
- node:Node.js の公式イメージを起動
つまり:
「ホストの現在のフォルダを、コンテナの /app に映し込んで Node を起動する」
という動作になります。
例
ホスト側が /Users/you/myapp にいるなら:
ホスト: /Users/you/myapp
↓
コンテナ: /app
この2つが“同じフォルダ”として扱われます。
マウントが生む最大のメリット:ホットリロード
コードを保存した瞬間、コンテナ側も即更新される
マウントを使うと、ホストで app.js を保存した瞬間、
コンテナ内の /app/app.js も同時に更新されます。
検索結果でも「コードを変更した瞬間にコンテナ側にも反映される」と明記されています。
これにより:
- Docker を使っているのに
- ローカル開発と同じスピードで
- コード変更が即反映される
という最高の開発体験が実現します。
ホットリロードをさらに強化する例(Node.js)
nodemon を使うと“自動再起動”まで自動化
docker run -v $(pwd):/app -w /app node npx nodemon app.js
検索結果でも nodemon を使う例が紹介されています。
これにより:
- ホストでコードを保存
- コンテナ内で nodemon が変更を検知
- アプリが自動で再起動
- ブラウザを更新すれば即反映
という流れが完成します。
前半まとめ
- マウント=ホストのフォルダをコンテナに映し込む仕組み
docker run -v $(pwd):/app nodeは「ホストの現在のフォルダを /app にマウント」- コード変更が即コンテナに反映される=ホットリロードの基盤
- nodemon などと組み合わせると“自動再起動”まで実現
- これにより Docker 開発でもローカルと同じスピードで作業できる
