Razzle: Razzle zum Laufen bringen im Docker-Entwicklungscontainer

Erstellt am 1. Dez. 2017  ·  3Kommentare  ·  Quelle: jaredpalmer/razzle

Beim Durchsuchen der Probleme in diesem Repo scheint es, dass einige der Mitwirkenden mit der Verwendung von Docker vertraut sind, also könnte mir vielleicht jemand ein wenig helfen. Ich versuche, einen Entwicklungsworkflow mit Docker einzurichten und hmr in einem Docker-Container reagieren zu lassen. Das Ziel ist es, eine funktionierende Lösung zu erhalten, ohne das grundlegende Razzle-Create-App-Projekt zu stark zu hacken. Ich habe meine Dockerdatei wie folgt erstellt:

FROM node:6

WORKDIR /home/node/app

EXPOSE 3000
EXPOSE 3001

CMD ["npm", "start"]

Dann starte ich den Container mit dem als Volume gemounteten dev-Verzeichnis mit
docker run --name hmr-test -d -p 8080:3000 -p 3001:3001 -v C:\Users\charles\Desktop\docker-hmr-test\ui-service:/home/node/app docker-hmr

Die App wird korrekt ausgeführt und angezeigt, aber Razzle erkennt keine Änderungen, die am lokalen Dateisystem vorgenommen werden. Wenn ich bash im Container ausführe und die Dateien catiere, kann ich sehen, dass sie korrekt aktualisiert werden und Razzle vom richtigen Verzeichnis im Container aus startet. Warum erkennt Razzle also die Dateien nicht und erstellt sie neu?

Hilfreichster Kommentar

Dieses Problem hat mit einem bekannten Problem zu tun, das im Docker ausgeführt wird. Das Ausführen eines Containers in einer Windows-Umgebung übermittelt die Dateiereignisse nicht an den Docker-Container mit nativer Funktionalität. Die aktuelle Problemumgehung bis zur Implementierung der nativen Funktionalität besteht darin, das Webpack-Polling im Docker-Container zu verwenden, damit Webpack Änderungen am Dateisystem abfragen kann. Daher müssen Sie dies zu einer razzle.config.js-Datei hinzufügen, damit hmr Updates sieht:

       if(config.devServer){
            config.devServer.watchOptions['poll'] = 1000;
            config.devServer.watchOptions['aggregateTimeout'] = 300;
        }

@jaredpalmer Wenn Sie dafür einen Feature-Zweig haben möchten, könnte ich etwas für eine PR ausarbeiten. Lass es mich wissen. Vielen Dank für die Erstellung dieses fantastischen Starter-Kits.

Alle 3 Kommentare

Dieses Problem hat mit einem bekannten Problem zu tun, das im Docker ausgeführt wird. Das Ausführen eines Containers in einer Windows-Umgebung übermittelt die Dateiereignisse nicht an den Docker-Container mit nativer Funktionalität. Die aktuelle Problemumgehung bis zur Implementierung der nativen Funktionalität besteht darin, das Webpack-Polling im Docker-Container zu verwenden, damit Webpack Änderungen am Dateisystem abfragen kann. Daher müssen Sie dies zu einer razzle.config.js-Datei hinzufügen, damit hmr Updates sieht:

       if(config.devServer){
            config.devServer.watchOptions['poll'] = 1000;
            config.devServer.watchOptions['aggregateTimeout'] = 300;
        }

@jaredpalmer Wenn Sie dafür einen Feature-Zweig haben möchten, könnte ich etwas für eine PR ausarbeiten. Lass es mich wissen. Vielen Dank für die Erstellung dieses fantastischen Starter-Kits.

@alexjoyner heilige moly. Danke, dass du das herausgefunden hast. Ich bin kein Javascript-Typ, also hat mir das sehr geholfen.

die config hat bei mir nicht funktioniert. sieht so aus, als ob es aktualisiert wird, aber nicht im Browser angezeigt wird.

Das folgende Protokoll zeigt den Start und die Änderung der Datei.

0|razzle   |
0|razzle   | > [email protected] start /app/razzle/razzle
0|razzle   | > razzle start
0|razzle   |
0|razzle   |  WAIT  Compiling...
0|razzle   |
0|razzle   | ℹ Compiling Client
0|razzle   | ℹ 「wds」: Project is running at http://apps.syntapse.co.uk:3001/
0|razzle   | ℹ 「wds」: webpack output is served from undefined
0|razzle   | ℹ 「wds」: Content not from webpack is served from /app/razzle/razzle
0|razzle   | ℹ 「wds」: 404s will fallback to /index.html

0|razzle  | ✔ Client: Compiled successfully in 8.28s
0|razzle  | ℹ Compiling Server
0|razzle  | ✔ Server: Compiled successfully in 765.85ms
0|razzle  | Warning: Please use `require("react-router-dom").Route` instead of `require("react-router-dom/Rout0|razzle  | Warning: Please use `require("react-router-dom").Switch` instead of `require("react-router-dom/Swi0|razzle  | ✅  Server-side HMR Enabled!
0|razzle  | 🚀 started
0|razzle  | ℹ Compiling Server
0|razzle  | ✔ Server: Compiled successfully in 88.70ms
0|razzle  | 🔁  HMR Reloading `./server`...
0|razzle  | [HMR] Updated modules:
0|razzle  | [HMR]  - ./src/Home.js
0|razzle  | [HMR]  - ./src/App.js
0|razzle  | [HMR]  - ./src/server.js
0|razzle  | [HMR] Update applied.
0|razzle  | ℹ Compiling Client
0|razzle  | ✔ Client: Compiled successfully in 73.55ms
0|razzle  | ℹ Compiling Client
0|razzle  | ✔ Client: Compiled successfully in 228.31ms
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

mhuggins picture mhuggins  ·  3Kommentare

piersolenski picture piersolenski  ·  4Kommentare

howardya picture howardya  ·  5Kommentare

krazyjakee picture krazyjakee  ·  3Kommentare

kkarkos picture kkarkos  ·  3Kommentare