Node.js + Docker撰写:node_modules消失

我正在尝试使用Docker Compose将许多Node.js应用程序集成在开发环境中。 我遇到了一个问题,但是,与node_modules

这是发生了什么事情:

  1. npm install作为Dockerfile一部分运行。
  2. 我的本地目录中没有node_modules 。 (我不应该因为依赖关系的安装应该在容器中发生,对吗?这似乎打败了目的,否则,因为我需要在本地安装Node.js。)
  3. docker-compose.yml ,我使用源代码设置了一个volume
  4. docker-compose build运行良好。
  5. 当我node_modules docker-compose upnode_modules目录在容器中消失 – 我假设因为卷被挂载,我没有在我的本地目录中。

我如何确保node_modules坚持到底?

Dockerfile

 FROM node:0.10.37 COPY package.json /src/package.json WORKDIR /src RUN npm install -g grunt-cli && npm install COPY . /src EXPOSE 9001 CMD ["npm", "start"] 

docker-compose.yml

 api: build: . command: grunt links: - elasticsearch ports: - "9002:9002" volumes: - .:/src elasticsearch: image: elasticsearch:1.5 

由于Node.js加载模块的方式 ,只需在源代码path中放置更高的node_modules即可。 例如,将源代码放在/app/src ,将你的package.json放在/app ,所以/app/node_modules就是它们的安装位置。

我试过你的修复,但问题是大多数人在/usr/src/app目录下运行npm install,导致node_modules文件夹在/app目录中。 因此, node_modules文件夹将在容器的/usr/src/usr/src/app目录中结束,最终导致出现相同的问题。