Dockerfile 内容排序
- 基本图像声明(
FROM) - 元数据(例如
MAINTAINER,LABEL) - 安装系统依赖项(例如
apt-get install,apk add) - 复制应用依赖项文件(例如
bower.json,package.json,build.gradle,requirements.txt) - 安装应用程序依赖项(例如
npm install,pip install) - 复制整个代码库
- 设置默认运行时配置(例如
CMD,ENTRYPOINT,ENV,EXPOSE)
这些排序是为了使用 Docker 的内置缓存机制优化构建时间。
经验法则:
经常更改的部件(例如代码库)应放在 Dockerfile 的底部附近,反之亦然。很少改变的部分(例如依赖性)应放在顶部。