23

私はDockerにかなり慣れていないので、自分のコンピューターにnode_modulesフォルダーをマップしたかった(デバッグ目的で)。

これは私の docker-compose.yml です

web:
  build: .
  ports:
    - "3000:3000"
  links:
    - db
  environment:
    PORT: 3000
  volumes:
    - .:/usr/src/app
    - /usr/src/app/node_modules
db:
  image: mongo:3.3
  ports:
    - "27017:27017"
  command: "--smallfiles --logpath=/dev/null"

Docker for Mac を使用しています。実行するdocker-compose up -dとすべてうまくいきますが、コンピューターに node_modules フォルダーが作成されますが、空です。コンテナーの bash と ls node_modules に移動すると、すべてのパッケージがそこにありました。

自分のコンピューターでもコンテナーのコンテンツを取得するにはどうすればよいですか?

ありがとうございました

4

5 に答える 5

2

最も簡単な解決策

Docker Compose とバインド マウントを使用したローカルボリュームドライバーを使用して、ローカルの node_modules ディレクトリをストレージの場所として使用するように node_modules ボリュームを構成します。

最初に、ローカルの node_modules ディレクトリがあることを確認するか、それを作成してから、docker-compose ファイルの名前付きボリューム セクションに Docker ボリュームを作成します。

volumes:
  node_modules:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: ./local/relative/path/to/node_modules

次に、node_modules ボリュームをサービスに追加します。

ui:
  volumes:
    - node_modules:/container/path/to/node_modules

常に Docker コンテナー内で node_module の変更を ( docker -compose execを使用して) 行うようにしてください。完全に同期され、IDE、コード補完、デバッグなどのためにホストで利用できるようになります。

于 2021-04-07T21:31:33.403 に答える