Razzle: Faire en sorte que Razzle s'exécute dans le conteneur de développement Docker

Créé le 1 déc. 2017  ·  3Commentaires  ·  Source: jaredpalmer/razzle

En parcourant les problèmes de ce référentiel, il semble que certains des contributeurs connaissent l'utilisation de docker, alors peut-être que quelqu'un pourrait m'aider un peu. J'essaie de mettre en place un flux de travail de développement avec docker et de pouvoir faire réagir hmr dans un conteneur docker. L'objectif est d'obtenir une solution de travail sans trop de piratage du projet de base razzle-create-app. J'ai créé mon dockerfile comme suit:

FROM node:6

WORKDIR /home/node/app

EXPOSE 3000
EXPOSE 3001

CMD ["npm", "start"]

puis je démarre le conteneur avec le répertoire dev monté en tant que volume avec
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

L'application s'exécute et s'affiche correctement, mais Razzle ne détecte aucune modification apportée au système de fichiers local. Si j'exécute bash dans le conteneur et cat les fichiers, je peux voir qu'ils se mettent à jour correctement et que razzle démarre à partir du bon répertoire dans le conteneur, alors pourquoi razzle ne reconnaît-il pas les fichiers et reconstruit-il?

Commentaire le plus utile

Ce problème est lié à un problème connu qui s'exécute dans Docker. L'exécution d'un conteneur à partir d'un environnement Windows ne communique pas les événements de fichier au conteneur Docker avec la fonctionnalité native. La solution de contournement actuelle jusqu'à ce que la fonctionnalité native soit implémentée consiste à utiliser l'interrogation Webpack dans le conteneur Docker pour permettre à Webpack d'interroger les modifications du système de fichiers. Par conséquent, vous devez ajouter ceci à un fichier razzle.config.js pour que hmr voie les mises à jour :

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

@jaredpalmer Si c'est quelque chose pour lequel vous voudriez avoir une branche de fonctionnalités, je pourrais travailler quelque chose pour un PR. Faites le moi savoir. Merci d'avoir créé ce kit de démarrage génial.

Tous les 3 commentaires

Ce problème est lié à un problème connu qui s'exécute dans Docker. L'exécution d'un conteneur à partir d'un environnement Windows ne communique pas les événements de fichier au conteneur Docker avec la fonctionnalité native. La solution de contournement actuelle jusqu'à ce que la fonctionnalité native soit implémentée consiste à utiliser l'interrogation Webpack dans le conteneur Docker pour permettre à Webpack d'interroger les modifications du système de fichiers. Par conséquent, vous devez ajouter ceci à un fichier razzle.config.js pour que hmr voie les mises à jour :

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

@jaredpalmer Si c'est quelque chose pour lequel vous voudriez avoir une branche de fonctionnalités, je pourrais travailler quelque chose pour un PR. Faites le moi savoir. Merci d'avoir créé ce kit de démarrage génial.

@alexjoyner saint moly. Merci pour la solution. Je ne suis pas un gars de javascript donc cela m'a aidé une tonne.

la config n'a pas fonctionné pour moi. ressemble à sa mise à jour mais ne se voit pas dans le navigateur.

le journal suivant montre le démarrage et le changement de fichier.

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
Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

jaredpalmer picture jaredpalmer  ·  15Commentaires

ScriptedAlchemy picture ScriptedAlchemy  ·  38Commentaires

ravikp7 picture ravikp7  ·  31Commentaires

therealgilles picture therealgilles  ·  64Commentaires

kireerik picture kireerik  ·  16Commentaires