dockerでReactのコンテナを立てています。
ビルドツールはViteで、npmを使っています。末尾に、バージョン等を記載しています。
質問したいこと
コンテナの node_modules ディレクトリは中身が見えるのに、ホストマシンのVSCode上では node_modules が空になっているのを、見えるようにしたいです。
コンテナから実行されているので、アプリケーション自体は動きますが、ホストマシンのVSCode上では node_modulesが空なので、コードの静的解析ツールから無限に怒られてしまいます。
以下にソースコードを示します。
ソースコード
Dockerfile
1FROM node:20.13.1 2 3WORKDIR /front 4 5COPY package.json package-lock.json /front 6 7RUN npm install 8 9COPY . /front 10EXPOSE 3000 11 12CMD ["npm", "run", "dev", "--", "--host"] 13
compose.yaml
1(中略) 2 front: 3 container_name: front 4 build: 5 context: ./frontend 6 dockerfile: Dockerfile.dev 7 volumes: 8 - ./frontend:/front 9 - node_modules_volumes:/front/node_modules 10 command: bash -c "npm install && npm run dev -- --host" 11 ports: 12 - "${FRONT_PORT}:5173" 13# トップレベルのvolumes 14volumes: 15 mysql_db: 16 node_modules_volumes:
試したこと
① Dockerfile から npm install せずに、compose.yamlの commandエントリから実行する
こちらの記事 を参考にしました。
② compose の、トップレベルのvolumes に設定を追加する
こちらの記事 を参考にして、試してもみました。
内容としては、以下のような変更です。
compose.yaml
1 node_modules: 2 driver: local 3 driver_opts: 4 type: none 5 device: ${PWD}/node_modules 6 o: bind
いずれも表示されませんでした。
ちゃんとコードの意味理解してから書け、というのは自分でも責めたいところですが、なぜこうなっているのか、分からない所が分かっていない状態でパンクしてしまっています。
Dockerの公式ドキュメントにも当たってみましたが、なかなかクリーンヒットする部分が見つけられませんでした。
どなたか、お力添えを頂ければ幸いです。
バージョン
node | npm | vite |
---|---|---|
20.13.1 | 10.5.2 | 5.2.0 |
0 コメント