我正在尝试使用Docker Compose在我的开发环境中汇集一些Node.js应用程序.但是,我遇到了一个问题,即node_modules.
这是发生了什么:
> npm install作为Dockerfile的一部分运行.
>我的本地目录中没有node_modules. (我不应该因为依赖项的安装应该在容器中进行,对吧?这似乎打败了目的,因为我需要在本地安装Node.js.)
>在docker-compose.yml中,我正在设置一个包含源代码的卷.
> docker-compose build运行良好.
>当我使用docker-compose时,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"]
泊坞窗,compose.yml
api: build: . command: grunt links: - elasticsearch ports: - "9002:9002" volumes: - .:/src elasticsearch: image: elasticsearch:1.5
解决方法
由于
the way Node.js loads modules,只需将node_modules放在源代码路径中更高的位置即可.例如,将源代码放在/ app / src,将package.json放在/ app中,这样/ app / node_modules就是它们的安装位置.