Docker でホストとコンテナの node_modules 衆い合いは匿名/名付きボリューム分離で恒久解決する
Node.js
インフラ
運用
ホストと linux コンテナで node_modules を共有してネイティブバイナリが衝突する問題は、docker-compose のサービスに node_modules 用の名付き/匿名ボリュームを追加してホストの node_modules を覆い隠し、コンテナ内で独立に install させるのが定石。volumes に './app:/app' と 'app-node-modules:/app/node_modules' を並べ(名付きボリュームがバインドマウントの上に /app/node_modules を覆う)、トップレベル volumes にも宣言する。.npmrc の supportedArchitectures や --force で全アーキ同梱する手もあるが、誰かが通常に install し直すと再発するため、ボリューム分離が構造的に堅牢。docker compose config -q で定義の妥当性を検証できる。