2016-07-12 7 views
2

Ich benutze Docker für Mac Version 1.12.0-RC2 für ein reaktives Projekt. Mein Workflow ist dies:Chokidar nimmt keine Dateiänderungen im Docker Container auf

  1. src/ Ordner auf OS X auf den Behälter montiert ist
  2. Wenn ein Entwickler eine Datei in src/ modifiziert sie zu ES5 und platziert in public/ umgewandelt wird (das funktioniert).
  3. Wenn eine Datei in public/ geändert wird, löst ein anderer Beobachter Hot-Neuladen aus (funktioniert auf meinem localhost, aber nicht im Container).

Hier ist mein Schritt Beobachter Code aus Schritt 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]; 
     } 
    }); 

Und meine Docker-compose.yml Datei:

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" 

Antwort

1

einen oder zwei Tage auf dieser Nachdem er ich das Problem gefunden , die Zeile:

verursachte Chokidar zu ignorieren /src war der Ordner, in den ich den gesamten Quellcode in den Andock-Container kopiert habe. Ich änderte diesen Pfad in der Dockerdatei und docker-compose.yml zu /code stattdessen und alles funktionierte wie erwartet.

Verwandte Themen