Docker multi-stage build机制
随着17.05版本的发布,Docker对于镜像构建这块也作了一项重要更新,那就是 multi-stage build(多阶段构建),这对于长期因为构建镜像太大而困扰的小伙伴们来说真是雪中送炭。
不支持多阶段构建
在17.05版本之前,我们构建Docker镜像时,通常会采用两种方式:
将所有的构建过程编写在同一个Dockerfile中,包括项目及其依赖库的编译、测试、打包等流程,这里可能会带来的一些问题:
- Dockerfile特别臃肿
- 镜像层次特别深
- 存在源码泄露的风险
- 稍微优雅的一种方式,就是我们事先在外部将项目及其依赖库编译测试打包好后,再将其拷贝到构建目录中,这种虽然可以很好地规避第一种方式存在的风险点,但仍需要我们编写两套Dockerfile或者一些脚本才能将其两个阶段自动整合起来
这里以一个简单的JAVA项目镜像构建为例来说明这两种构建方
