2016-07-12 11 views
2

私は反応プロジェクトのMac版docker 1.12.0-rc2を使用しています。私のワークフローはこれです:開発者は、それはES5に変換し、(この作品)public/に置かれますsrc/でファイルを変更するとOS X上Chokidarがドッカーコンテナ内でファイルの変更を取得していません

  1. src/フォルダがコンテナ
  2. に搭載されています。
  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]; 
     } 
    }); 

そして、私のドッキングウィンドウ-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" 

答えて

1

これに一日か二日を過ごした後、私は問題を発見しました、行:

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

chokidarを無視する原因でした/srcは、ドッカーコンテナ内のすべてのソースコードをコピーしていたフォルダです。 Dockerfileでこのパスを変更し、docker-compose.ymlを/codeに変更し、すべてが期待通りに機能しました。

関連する問題