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
可以正常工作。
我已经尝试了很多在网络上找到的解决方法:
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
答案 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
。