質問: Dockerfileでコンテナの/root/work直下に予め用意しておいたpackage.jsonを設置し、コンテナに入ってnpm install する運用を考えました。 当初は更に/root/work/srcディレクトリを用意し、そこだけをホストと共有、git配下にしようとしました。 ※docker-compose.ymlでのディレクトリ共有 つまりnpm installで作られる/root/work/node_modulesは共有対象外となります。 しかし、この環境でvscodeで用いたプログラミングをするとnode_modulesにある型情報を読み込めずvscode上でコード上にwarningが発生します。 ※例えばnpm installしたパッケージをimportしようとすると存在しないパッケージだと怒られる vscodeを実行しているホスト側のディレクトリを見るので当然だと思いますが、では/root/workそのものを共有しようとした時に問題が発生しました。 元々Dockerfileで入れた/root/work/package.jsonが、おそらくディレクトリ共有のタイミングで (おそらく)ホスト側の共有ディレクトリ(当然この時点では空っぽ)による上書きで全て無くなります。 ディレクトリ共有においてホスト側が優先されるのか、この箇所で完全に詰まってしまいました。 こういう場合、そもそも空のディレクトリを共有するところまでをDocker(compose)で行い、 npm周りは各自コンテナログイン→git等でpackage.jsonを取り込み→npm installというのが一般的なのでしょうか。 皆様の場合どのように対応しているのか、お力をお貸し頂ければ幸いです。
回答: 共有ディレクトリには後でファイルをセットするようにします