引子
在构建、部署、测试等情景中下不知你也是否遇到过这么几个问题,构建慢、依赖安装慢、重复性构建。 以至于每一次采用docker来构建时,都需要等上那么几分钟。
有时候是非常的浪费时间, 那么是否有方法进行一次分离构建呢。当然正如docker口号所说的那般”
Build once,Run anywher“,
那么该如何解决“构建慢、依赖安装慢、重复性构建”的问题呢, 看似三个或者更多问题,其实归根结底是一个问题——分层构建
分层构建
想深层理解docker的分层构建,不得不从docker的设计特性出发。虚拟机与docker结构,如下图所示。
一层一层的分层结构,那么所谓分层构建只需要将环境依赖与业务代码分开构建即可。实现如下
-
短时间内环境依赖构建一次且仅构建一次
-
业务代码触发构建
例子
python
1 |
#构建环境依赖 |
1 |
# 构建 |
1 |
#项目构建 |
golang
两层: 1.依赖构建 2.编译与项目构建
三层: 1.依赖构建 2.编译构建 3.运行文件构建
1 |
FROM golang:1.16 as builder |