假设现在有一个前端的项目,需要下载 npm 依赖库才能运行。
每次使用 docker 去构建这个前端项目镜像时都需要在镜像里面下载依赖库,才能成功运行,这样会耗费大量的时间。
我知道有一种做法是先在本地去 npm install,然后再将 node_modules 文件夹 COPY 到镜像里面,但这显然也不是很有效的方法,毕竟 node_modules 的文件量巨大。
然后我到 stackoverflow 查到了有个解决方法(还没有成功验证过),链接里面有提到这几个关键点:
ADD package.json /tmp/package.json
RUN cd /tmp && npm install
RUN mkdir -p /opt/app && cp -a /tmp/node_modules /opt/app/
但是我完全看不懂这个是什么意思,ADD 一个 package.json 到 /tmp/ 目录,然后下载依赖,后面才能再 copy 整个项目过去?里面还有提到 docker 缓存层,但是哪里用到了 docker 缓存层了,是 /tmp/ 目录的作用?
我个人还没有深入了解过 docker,希望各位大佬能指导一下,请问如何解决每次构建镜像时,npm 依赖库都需要重新 install 问题?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…