Chokidar不在Docker容器内部进行文件更改

我正在使用docker for mac版本1.12.0-rc2作为反应项目。 我的工作stream程是:

  1. OS X上的src/文件夹被安装到容器中
  2. 当开发人员修改src/的文件时,会将其转换为ES5并置于public/ (此工作)。
  3. public/另一个观察者更改文件触发热重新加载(在我的本地主机,但不在容器中)。

这是我从第3步的步骤观察者代码:

 // root = "/src" const watcher = chokidar.watch(root, { usePolling: true, awaitWriteFinish: { pollInterval: 100, stabilityThreshold: 250 }, ignored: /\.(git|gz|map)|node_modules|jspm_packages|src/, ignoreInitial: true, persistent: true }) .on("change", function fileWatcher(filename) { const modulePath = filename.replace(`${root}/`, ""); wss.clients.forEach(function sendFileChange(client) { send("filechange", modulePath, client); }); if (cache[filename]) { wss.clients.forEach(function sendCacheFlush(client) { send("cacheflush", filename, client); }); delete cache[filename]; } }); 

和我的docker-compose.yml文件:

 version: '2' services: wildcat: build: context: . args: JSPM_GITHUB_AUTH_TOKEN: image: "nfl/react-wildcat-example:latest" environment: NODE_ENV: development PORT: 3000 STATIC_PORT: 4000 COVERAGE: LOG_LEVEL: NODE_TLS_REJECT_UNAUTHORIZED: 0 CHOKIDAR_USEPOLLING: 'true' volumes: - ./src:/src/src - ./api:/src/api ports: - "3000:3000" - "4000:4000" ulimits: nproc: 65535 entrypoint: "npm run" command: "dev" 

花了一两天后,我发现这个问题,行:

 ignored: /\.(git|gz|map)|node_modules|jspm_packages|src/, 

导致chokidar忽略/src这是我所有的源代码复制到泊坞窗容器中的文件夹。 我把Dockerfile和docker-compose.yml中的这个path改成了/code而且一切都按预期工作。