React.js Docker - 找不到模块

问题描述 投票:0回答:2

Prerequisites

Linux 18.04

create-react-app 2.0

docker 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

Problem

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

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

它只是不起作用,我不能自己处理它。任何想法为什么会这样?

Update

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

docker run -it \
  -v ${PWD}:/usr/src/app \
  -v /usr/src/app/node_modules \
  -p 3000:3000 \
  --rm \
  prov-app
reactjs docker docker-compose
2个回答
0
投票

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

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

编辑

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


0
投票

代替:

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

尝试:

volumes:
  - ./:/usr/src/app
  - /usr/src/app/node_modules
© www.soinside.com 2019 - 2024. All rights reserved.