dockerfile最佳实践
Docker映像由只读层组成,每个只读层代表一个Dockerfile指令。这些层是堆叠的,每个层都是上一层的变化的增量。
减少构建时间:镜像的构建顺序很重要,当你向 Dockerfile 中添加文件,或者修改其中的某一行时,那一部分的缓存就会失效,该缓存的后续步骤都会中断,需要重新构建。所以优化缓存的最佳方法是把不需要经常更改的行放到最前面,更改最频繁的行放到最后面
只拷贝需要的文件,防止缓存溢出
最小化可缓存的执行层,每一个 RUN 指令都会被看作是可缓存的执行单元。太多的 RUN 指令会增加镜像的层数,增大镜像体积,run多个命令可以写在一起,形如:RUN apt-get update && apt-get install -y
删除包管理工具的缓存,在每一个 RUN 指令的末尾删除缓存。如果你在下一条指令中删除缓存,不会减小镜像的体积。
使用更具体的标签,基础镜像尽量不要使用 latest 标签,在 Dockerfile 中最好指定基础镜像的具体标签
要排除与构建无关的文件,请使用.dockerignore文件。该文件支持类似于.gitignore文件的排除模式。
使用多阶段构建,多阶段构建可以大幅度减小最终镜像的大小
不要安装不必要的软件包,镜像构建过程中生成的临时文件可以在dockerfile中使用rm删除
参考文档:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/