Razzle: Fazendo o razzle rodar no contêiner de desenvolvimento do Docker

Criado em 1 dez. 2017  ·  3Comentários  ·  Fonte: jaredpalmer/razzle

Ao pesquisar os problemas neste repositório, parece que alguns dos contribuidores estão familiarizados com o uso do docker, então talvez alguém possa me dar uma pequena ajuda. Estou tentando configurar um fluxo de trabalho de desenvolvimento com o docker e poder fazer com que o hmr reaja dentro de um contêiner do docker. O objetivo é obter uma solução funcional sem muitos hackers do projeto base razzle-create-app. Eu criei meu dockerfile da seguinte forma:

FROM node:6

WORKDIR /home/node/app

EXPOSE 3000
EXPOSE 3001

CMD ["npm", "start"]

então estou iniciando o contêiner com o diretório dev montado como um volume com
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

O aplicativo é executado e exibido corretamente, mas o razzle não detecta nenhuma alteração feita no sistema de arquivos local. Se eu executar o bash no contêiner e cat os arquivos, posso ver que eles estão atualizando corretamente e o razzle está iniciando no diretório correto no contêiner, então por que o razzle não reconhece os arquivos e os reconstrói?

Comentários muito úteis

Esse problema tem a ver com um problema conhecido em execução no docker. A execução de um contêiner de um ambiente Windows não comunica os eventos de arquivo ao contêiner docker com funcionalidade nativa. A solução alternativa atual até que a funcionalidade nativa seja implementada é usar a pesquisa do webpack no contêiner docker para permitir que o webpack pesquise alterações no sistema de arquivos. Portanto, você deve adicionar isso a um arquivo razzle.config.js para obter o hmr para ver as atualizações:

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

@jaredpalmer Se isso é algo para o qual você gostaria de ter uma ramificação de recursos, eu poderia trabalhar em algo para um PR. Apenas deixe-me saber. Obrigado por fazer este incrível kit inicial.

Todos 3 comentários

Esse problema tem a ver com um problema conhecido em execução no docker. A execução de um contêiner de um ambiente Windows não comunica os eventos de arquivo ao contêiner docker com funcionalidade nativa. A solução alternativa atual até que a funcionalidade nativa seja implementada é usar a pesquisa do webpack no contêiner docker para permitir que o webpack pesquise alterações no sistema de arquivos. Portanto, você deve adicionar isso a um arquivo razzle.config.js para obter o hmr para ver as atualizações:

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

@jaredpalmer Se isso é algo para o qual você gostaria de ter uma ramificação de recursos, eu poderia trabalhar em algo para um PR. Apenas deixe-me saber. Obrigado por fazer este incrível kit inicial.

@alexjoyner santa moly. Obrigado por descobrir isso. Eu não sou um cara de javascript, então isso me ajudou muito.

a configuração não funcionou para mim. parece estar atualizando, mas não vendo no navegador.

o log a seguir mostra a inicialização e a alteração para o arquivo.

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
Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

dizzyn picture dizzyn  ·  3Comentários

mhuggins picture mhuggins  ·  3Comentários

Ronny25 picture Ronny25  ·  5Comentários

pseudo-su picture pseudo-su  ·  3Comentários

GouthamKD picture GouthamKD  ·  3Comentários