docker容器中的空节点node_modules

我有以下Dockerfile:

FROM node:8.2.1 RUN mkdir -p /app WORKDIR /app COPY package.json ./package.json RUN npm -q install COPY . /app RUN npm -q install nodemon babel-cli node-gyp create-react-app react-scripts babel-preset-es2015 -g EXPOSE 3000 EXPOSE 3001 CMD ["npm", "run", "startServer"] 

和docker-compose.yml:

 version: "2" services: web: build: . volumes: - ./:/app ports: ["3000:3000", "3001:3001"] links: [ mongo ] mongo: image: mongo ports: [ "27017:2701" ] 

当我进入web_container,我看到,node_modules文件夹是空白的。 我试图改变在Dockerfile命令的顺序,但它没有帮助。 我也尝试直接在容器中运行“npm install”,并且正在工作,但是我不想在每次构build之后执行此操作。 任何帮助将不胜感激。

我认为撰写文件中的音量命令让你感到困惑。 由于你基本上用你的主机覆盖了整个项目,dockerfiles中的命令没有效果,因为之后卷将被装载并且内容被replace。

尝试运行没有卷部分的整个事情,你应该看到它的工作。

您仍然可以使用卷,但是您需要在主机上安装node_modules。