Node.js + Docker撰写:node_modules消失
我正在尝试使用Docker Compose将许多Node.js应用程序集成在开发环境中。 我遇到了一个问题,但是,与node_modules
。
这是发生了什么事情:
-
npm install
作为Dockerfile
一部分运行。 - 我的本地目录中没有
node_modules
。 (我不应该因为依赖关系的安装应该在容器中发生,对吗?这似乎打败了目的,否则,因为我需要在本地安装Node.js。) - 在
docker-compose.yml
,我使用源代码设置了一个volume
。 -
docker-compose build
运行良好。 - 当我
node_modules
docker-compose up
,node_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
目录中结束,最终导致出现相同的问题。