一段时间以来,我一直试图在Docker构建中缓存node\u模块。我尝试过几种方法,包括这里的方法,但都没有成功
我缓存的主要原因是,构建我的映像需要30+分钟,这太多了
我的Dockerfile:
#此图像将基于OFFIcial nodejs docker图像
从节点:4.2.1
运行npm安装[email protected]&&\
npm安装-g gulp&&\
npm安装-g tsd
#使用对package.json的更改强制Docker不使用缓存
#当我们更改应用程序的nodejs依赖项时:
添加package.json/src/package.json
运行cd/src&&;npm安装
#将所有代码放在容器中的目录中
加上/src
#设置命令将在哪个目录中运行
WORKDIR/src
#安装依赖项
运行cd/src&&\
tsd重新安装-so&&\
jspm安装与维护&\
大口构建-p
#告诉Docker我们要用这个端口
暴露3000
#运行容器时运行应用程序的命令
CMD[“npm”、“运行”、“开始生产”]
我没有.dockrignore文件。我之前添加了一个,但它仍然没有缓存我的节点\u模块
那么,如何缓存节点模块?请随意建议对Dockerfile进行修改
谢谢
我不确定它是否是错误的根源,但请尝试在ADD命令中指定目标文件夹,而不是目标文件
添加package.json/src
此外,您可以使用复制而不是添加(添加可以处理url和存档,但此处不需要它)
您还可以在文件前面指定工作目录
请尝试使用以下代码:
#此图像将基于正式的nodejs docker图像
从节点:4.2.1
运行npm安装[email protected]&&\
npm安装-g gulp&&\
npm安装-g tsd
#设置命令将在哪个目录中运行
WORKDIR/src
#使用对package.json的更改强制Docker不使用缓存
#当我们更改应用程序的nodejs依赖项时:
复制package.json/
运行npm安装
#将所有代码放在容器中的目录中
复制/
#安装依赖项
运行tsd重新安装-so&&\
jspm安装与维护&\
大口构建-p
#告诉Docker我们要用这个端口
暴露3000
#运行容器时运行应用程序的命令
CMD[“npm”、“运行”、“开始生产”]