我尝试使用Docker Compose在我的开发环境中汇集了许多Node.js应用程序。但是,我遇到问题node_modules
。
这里发生了什么:
npm install
是Dockerfile
。node_modules
。 (我不应该因为依赖项的安装应该在容器中进行,对吧?这似乎打败了目的,因为我需要在本地安装Node.js。)docker-compose.yml
中,我设置了volume
的源代码。docker-compose build
运行良好。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
答案 0 :(得分:3)
由于the way Node.js loads modules,只需在源代码路径中放置node_modules
。例如,将您的来源放在/app/src
,将package.json
放在/app
,这样/app/node_modules
就是他们安装的位置。
答案 1 :(得分:0)
我尝试了你的修复,但问题是大多数人在/usr/src/app
目录中运行npm install,导致node_modules
文件夹最终在/app
目录中。因此,node_modules
文件夹最终会出现在容器中的/usr/src
和/usr/src/app
目录中,最终会出现与您开始时相同的问题。