如何在Docker build上缓存节点_模块?

一段时间以来,我一直试图在Docker构建中缓存node\u模块。我尝试过几种方法,包括这里的方法,但都没有成功

我缓存的主要原因是,构建我的映像需要30+分钟,这太多了

我的Dockerfile

#此图像将基于OFFIcial nodejs docker图像
从节点:4.2.1
运行npm安装[email protected]&amp&amp\
npm安装-g gulp&amp&amp\
npm安装-g tsd
#使用对package.json的更改强制Docker不使用缓存
#当我们更改应用程序的nodejs依赖项时:
添加package.json/src/package.json
运行cd/src&amp&npm安装
#将所有代码放在容器中的目录中
加上/src
#设置命令将在哪个目录中运行
WORKDIR/src
#安装依赖项
运行cd/src&amp&amp\
tsd重新安装-so&amp&amp\
jspm安装与维护&amp\
大口构建-p
#告诉Docker我们要用这个端口
暴露3000
#运行容器时运行应用程序的命令
CMD[“npm”、“运行”、“开始生产”]

我没有.dockrignore文件。我之前添加了一个,但它仍然没有缓存我的节点\u模块

那么,如何缓存节点模块?请随意建议对Dockerfile进行修改

谢谢

我不确定它是否是错误的根源,但请尝试在ADD命令中指定目标文件夹,而不是目标文件

添加package.json/src

此外,您可以使用复制而不是添加添加可以处理url和存档,但此处不需要它)

您还可以在文件前面指定工作目录

请尝试使用以下代码:

#此图像将基于正式的nodejs docker图像
从节点:4.2.1
运行npm安装[email protected]&amp&amp\
npm安装-g gulp&amp&amp\
npm安装-g tsd
#设置命令将在哪个目录中运行
WORKDIR/src
#使用对package.json的更改强制Docker不使用缓存
#当我们更改应用程序的nodejs依赖项时:
复制package.json/
运行npm安装
#将所有代码放在容器中的目录中
复制/
#安装依赖项
运行tsd重新安装-so&amp&amp\
jspm安装与维护&amp\
大口构建-p
#告诉Docker我们要用这个端口
暴露3000
#运行容器时运行应用程序的命令
CMD[“npm”、“运行”、“开始生产”]

发表评论