我们在版本控制中使用不包含node_modules的标准做法。但是,当通过CI/CD管道时,我们必须在几个地方重新安装NPM依赖关系,并且它使一切都非常缓慢。加速Docker容器中的NPM安装
有没有办法用Docker缓存NPM依赖关系?我搜索了Google“docker cache npm dependencies”,2014年的第一个搜索结果产生了一个死链接。
没有什么值得的。
一个解决方案是在版本控制中包含node_modules,但我认为这将是一个巨大的错误。我认为以某种方式缓存依赖关系将是最佳选择。
这里是Dockerfile如:
FROM node:6
COPY . . # copy all files, but node_modules does not exist (=> gitignored)
RUN npm install --no-optional --only=production > /dev/null 2>&1
RUN npm install -g bower > /dev/null 2>&1
RUN bower install --config.interactive=false --allow-root > /dev/null 2>&1
ENTRYPOINT ["/bin/bash", "/root/cdt/run.sh"]
这里是一个可能的解决方案,但我不能完全弄清楚它是如何工作的:
=>http://bitjudo.com/blog/2014/03/13/building-efficient-dockerfiles-node-dot-js/
请问你Dockerfile样子? – n2o
可能的解决方案是使用['-v'](https://docs.docker.com/engine/reference/commandline/run/#mount-volume-v---read-only)选项Docker命令行将'〜/ .npm'映射到容器中的〜/ .npm。这种方式在后续执行时使用已经填充的缓存。但是,这种改进并不出色,它仍然需要很长时间才能解决依赖关系。 – axiac
我刚刚添加了我的Dockerfile,谢谢 –