我司的自动化构建系统现在使用 docker build 。项目根目录下放一个 Dockerfile 就行。
但 docker build 有一些限制,比如无法挂载 volume,maven 的包不太能完美缓存。每次构建都要下载一部分,构建时间 2 分钟。我测试过,如果 maven 包完美缓存,构建时间 1 分钟。
所以我在想是否要提供 docker run 的构建方式 。项目根目录下放一个 buildspec.yml ,在其中指定 runtime (也是 docker 镜像),代码挂载点,卷挂载点,构建指令等等。然后自动化系统会 run 这个 runtime 镜像,将代码复制到指定位置,将卷挂载至指定位置,并执行构建指令。构建指令会在 runtime container 中调用 docker build 生成一个镜像。
但是我觉得这么做不是很优雅,有以下几个问题: