Не могу получить горячую перезагрузку веб-пакета с окнами создания-реакции-приложения и докера - PullRequest
0 голосов
/ 27 декабря 2018

Мы собираемся разработать реагирующий pwa с помощью dockersetup и опубликовать приложение на страницах gitlab во время развертывания в главную ветвь.

Я работаю на устройстве с Windows и не могу получить функцию горячей загрузки в dev-режиме.,Всякий раз, когда я делаю некоторые изменения, код не перекомпилируется.Мне нужно docker-compose up --build каждый раз за каждое изменение.

Есть ли какой-нибудь возможный способ получить горячую перезагрузку, работающую на установке windows/docker/create-react-ap p?

После package.json:

 {
  "name": "Appname",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "react": "^16.7.0",
    "react-dom": "^16.7.0",
    "react-scripts": "2.1.1"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "buildandserver": "react-scripts build && serve -s build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": [
    ">0.2%",
    "not dead",
    "not ie <= 11",
    "not op_mini all"
  ]
}

Теперь Dockerfile для Dev-Setup:

FROM node:9.6.1
# set working directory
RUN mkdir /usr/src/app
WORKDIR /usr/src/app
# add `/usr/src/app/node_modules/.bin` to $PATH
ENV PATH /usr/src/app/node_modules/.bin:$PATH
# install and cache app dependencies
COPY package.json /usr/src/app/package.json
RUN npm install
RUN npm install react-scripts@1.1.1 -g
# start app
CMD ["npm", "start"]

И, по крайней мере, docker-compose для dev-setup:

version: '3.5'

services:

  App-Name:
    container_name: App-Name
    build:
      context: .
      dockerfile: devsetup/Dockerfile
    volumes:
      - './:/usr/src/app'
      - '/usr/src/app/node_modules'
    ports:
      - '3000:3000'
    environment:
      - NODE_ENV=development

Я запускаю Docker для Windowsна устройстве.Я надеюсь, что кто-нибудь может помочь мне отсюда ... Спасибо!

1 Ответ

0 голосов
/ 27 декабря 2018

Проблема в основном связана с тем, что вы работаете в Windows.

Почему?

Поскольку Docker в Windows плохо работает с томами.Если быть более точным - он не уведомляет контейнер об изменении объема.Он предоставляет обновленные файлы в контейнере, но Linux внутри контейнера «не знает» о том, что файл был изменен, что необходимо для запуска перекомпиляции веб-пакета.

Существует несколько решений: 1. Переключиться на Linux для разработки (я знаю, что это может быть невозможно, но если вы много работаете с Docker и можете двигаться - сделайте это. Контейнеры Linux в Linux работают намного быстрееникаких проблем с томами и т. д.) 2. Если вы не можете, вы можете использовать устаревший опрос в веб-пакете, который уже упоминался в комментариях.и контейнеры файлов внутри томов и уведомить контейнер об изменении ...

Я обнаружил, что 3 работают немного лучше, чем 2, но оба будут иметь некоторое снижение производительности.

Надеюсь, это поможет.Если у вас есть какие-либо вопросы, просто прокомментируйте, и я постараюсь изменить, чтобы объяснить лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...