React.js Docker - 找不到模块

Nik*_*nov 3 docker reactjs docker-compose

先决条件

Linux 18.04

创建反应应用程序2.0

码头工人19.09.0

文件

# 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"]
Run Code Online (Sandbox Code Playgroud)

docker-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
Run Code Online (Sandbox Code Playgroud)

问题

一切正常,但安装新软件包后 docker 停止按预期工作。每次我运行docker-compose up它都会失败并显示“找不到模块”错误。虽然npm start工作得很好。我已经尝试了很多在网上找到的解决方法:

  • 重启电脑
  • 删除 node_modules 文件夹并npm i再次运行
  • npm install// 的不同组合,--save包括 Dockerfile 中的 --save

它只是不起作用,我无法自己处理。任何想法为什么会发生这种情况?

更新

奇怪的是,但这段代码有效。我是 Docker 的菜鸟,所以我不知道有什么区别

docker run -it \
  -v ${PWD}:/usr/src/app \
  -v /usr/src/app/node_modules \
  -p 3000:3000 \
  --rm \
  prov-app
Run Code Online (Sandbox Code Playgroud)

Siy*_*iyu 7

一切正常,但安装新软件包后 docker 停止按预期工作。每次运行 docker-compose up 时,它都会因“找不到模块”错误而失败。

您需要重建映像才能安装该软件包。docker-compose build, 进而docker-compose up

编辑

根据您的更新,我意识到问题在于您的旧 node_module 卷在构建之间持续存在。尝试docker-compose down -v之前up