Dockfile 最佳实践
英文 中文 这个中文翻译欠精确,建议看原文。核心是缓存(减少构建时间)和只保留必要的文件(减小构建体积)。
1 减少构建时间
- 构建顺序影响缓存的利用效率,把不需要经常更改的放在前面
- 只拷贝需要的文件
- 把
apt-get update & install
之类的写在一行
2 减小镜像体积
- 删除不必要的依赖
- 删除包管理工具的缓存,
RUN apt-get update && apt-get -y install --no-install-recommends openjdk-8-jdk && rm -rf /var/lib/apt/lists/*
注意 这里删除和安装要放在同一个指令里。
3 可维护性
- 使用官方镜像做基础镜像
- 使用更具体的标签
- 选择体积最小的基础镜像
4 可复现
- 从源码构建,代替复制构建好的程序
- 使用单独的步骤获取依赖(提高缓存效率,依赖不常变)
- 使用多阶段构建来删除构建时的依赖
个人认为可复现意义不大