使用Docker多阶段构建生成更小的镜像

18 9月

在将源码直接打为Docker镜像的时候,经常纠结的一个问题就是如何获得更小的镜像。

以一个java项目为例,因为java编译的时候需要jdk,而运行的时候只需要jre,明显jre的大小更有优势。同时由于各种构建工具的存在(比如gradle,maven),下载的构建用的文件也很多,不光是maven的依赖,还有wrapper和一些临时文件。

之前的做法一直是使用两个Dockerfile,其中一个使用jdk构建出需要的jar文件,然后第二个使用jre直接将jar文件复制进去。虽然效果不错,但是还是觉得麻烦。

今天使用Daocloud的时候看到了安全构建这个选项(本质就是两段构建),就突然想到Docker会不会已经有了。结果一搜索还真有,亏我还用多Dockerfile构建了很长时间。

大概使用如下:

Docker支持的是多阶段构建,所以如果有需要的话,可以从多个不同的构建中获得生成物。

2 Replies to “使用Docker多阶段构建生成更小的镜像

发表评论

电子邮件地址不会被公开。