Docker相关
Dockerfile
multi stage
docker镜像应该尽可能的精简。所以如果需要先编译在运行,那么运行镜像就不应该包含编译需要的包。 因此需要两个image,一个镜像负责编译,一个镜像负责运行。这样的话操作比较麻烦,需要写两个dockerfile, 而且需要通过本地文件系统将编译结果传递到运行镜像。使用多阶段dockerfile可以from多个基础镜像, 后面的镜像只从前面的镜像复制所需要的文件,其他全部遗弃。大大减少了复杂度。 可以使用COPY –from从其他镜像复制文件。
multi layer
利用docker的缓存机制只下载改变的部分。
- 减少编译时间
- ci测试的稳定性,不会因为一些传递依赖的失败导致ci测试失败。如果setup.py不变就不改变依赖。
- 只有setup改变的时候才重新安装依赖包。(在新的branch上测试。)