Ошибка ввода / вывода в Create-React-App в Docker - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь докернизировать свою среду разработки create-react-app и сохранить горячие перезагрузки. Согласно большинству руководств (и этого парня ), самый прямой путь - docker run -p 3000:3000 -v "$(pwd):/var/www" -w "/var/www" node npm start в папке проекта.

Однако вместо этого я получаю эту ошибку:

$ docker run -p 3000:3000 -v "$(pwd):/var/www" -w "/var/www" node npm start

> my-app@0.1.0 start /var/www
> react-scripts start

sh: 1: react-scripts: Input/output error
npm ERR! code ELIFECYCLE
npm ERR! syscall spawn
npm ERR! file sh
npm ERR! errno ENOENT
npm ERR! my-app@0.1.0 start: `react-scripts start`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the my-app@0.1.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-04-02T06_55_22_257Z-debug.log

Я работаю на Windows. Я считаю, что монтирование тома может иметь некоторые проблемы с правами доступа, приводящие к ошибке ввода / вывода, но тестирование различных настроек не помогло. Я честно озадачен. Все, что я хочу, это запустить мое приложение в Docker с горячей перезагрузкой для разработки.

1 Ответ

0 голосов
/ 03 апреля 2020

Как оказалось , настройка create-react-app в docker требует немного больше работы.

Основная проблема заключается в том, что подключенные тома недоступны на этапе сборки , поэтому при запуске node npm start подключенные файлы проекта технически еще не существуют.

Таким образом, вам нужно сначала скопировать и установить проект, чтобы он запустился в первый раз, прежде чем монтируется том. После этого горячая перезагрузка работает нормально.

Вот моя последняя рабочая настройка:

docker-compose.yml:

  create-react-app:
    build:
      context: create-react-app
    ports:
      - 3000:3000
    environment:
      - NODE_PATH=/node_modules
      - CHOKIDAR_USEPOLLING=true
    volumes:
      - ./create-react-app:/create-react-app

Dockerfile:

FROM node:alpine

# Extend PATH
ENV PATH=$PATH:/node_modules/.bin

# Set working directory
WORKDIR /client

# Copy project files for build
ADD . .

# Install dependencies
RUN npm install

# Run create-react-app server
CMD ["npm", "run", "start"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...