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 的底部附近,反之亦然。很少改变的部分(例如依赖性)应放在顶部。