Dockerfile 内容排序

  1. 基本图像声明(FROM)
  2. 元数据(例如 MAINTAINER,LABEL)
  3. 安装系统依赖项(例如 apt-get install,apk add)
  4. 复制应用依赖项文件(例如 bower.json,package.json,build.gradle,requirements.txt)
  5. 安装应用程序依赖项(例如 npm install,pip install)
  6. 复制整个代码库
  7. 设置默认运行时配置(例如 CMD,ENTRYPOINT,ENV,EXPOSE)

这些排序是为了使用 Docker 的内置缓存机制优化构建时间。

经验法则:

经常更改的部件(例如代码库)应放在 Dockerfile 的底部附近,反之亦然。很少改变的部分(例如依赖性)应放在顶部。