React.js Docker-找不到模块

时间:2018-11-15 12:50:33

标签: reactjs docker docker-compose

先决条件

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"]

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

问题

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

  • 重启电脑
  • 删除node_modules文件夹,然后再次运行npm i
  • npm install / --save /包括--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 :(得分:0)

代替:

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

尝试:

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

答案 1 :(得分:0)

  

一切正常,但是在安装新的   软件包docker停止了预期的工作。每次我跑步   docker-compose up它失败,并显示“找不到模块”错误。

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

编辑

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