React.js Docker - модуль не найден - PullRequest
0 голосов
/ 15 ноября 2018

Предпосылки

Linux 18.04

create-реакции-приложение 2.0

докер 19.09.0

Dockerfile

# base image
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
ADD package.json /package.json

# install and cache app dependencies
COPY package.json /usr/src/app/package.json
RUN npm install --save --silent
RUN npm install react-scripts@latest -g --silent

# start app
CMD ["npm", "start"]

докер-compose.yml

version: '3.5'

services:

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

Проблема

Все работало просто отлично, но после установки нового пакета докер перестал работать как положено. Каждый раз, когда я запускаю docker-compose up, он завершается с ошибкой «Модуль не найден». Пока npm start отлично работает. Я пробовал довольно много обходных путей, найденных в сети:

  • перезагрузите компьютер
  • удалить папку node_modules и снова запустить npm i
  • различные комбинации npm install / --save / включая - сохранить в Dockerfile

Это просто не работает, и я не могу справиться с этим самостоятельно. Есть идеи, почему это может происходить?

Обновление

Странно, но этот код работает. Я новичок в Docker, так что я понятия не имею, в чем разница

docker run -it \
  -v ${PWD}:/usr/src/app \
  -v /usr/src/app/node_modules \
  -p 3000:3000 \
  --rm \
  prov-app

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Все работало просто отлично, но после установки нового пакетный докер перестал работать как положено. Каждый раз, когда я бегу docker-compose завершается с ошибкой «Модуль не найден».

Вам нужно пересобрать образ, чтобы установить этот пакет. docker-compose build, а затем docker-compose up

EDIT

Основываясь на вашем обновлении, я понимаю, что проблема в том, что ваш старый том node_module сохранялся между сборками. Попробуйте docker-compose down -v до up.

0 голосов
/ 15 ноября 2018

Вместо:

volumes:
  - '.:/usr/src/app'
  - '/usr/src/app/node_modules'

Попробуйте:

volumes:
  - ./:/usr/src/app
  - /usr/src/app/node_modules
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...