0%

Docker .dockerignore 文件

很多时候打包镜像都会直接将 Dockerfile 放到项目根目录里面去打包, 结果就会看到这样的输出 Sending build context to Docker daemon 3.986GB, 很多时候都想着项目并没有那么多东西, 然后翻看一下发现某个文件缓存之类的也被 docker 加入到打包上下文中, 所有需要像 git 一样, 将一些不必要的文件忽略掉

.dockerignore 文件的作用类似于 git 工程中的 .gitignore . 不同的是 .dockerignore 应用于 docker 镜像的构建, 它存在于 docker 构建上下文的根目录, 用来排除不需要上传到 docker 服务端的文件或目录.

  • 构建镜像时能避免不需要的大文件上传到服务端, 从而拖慢构建的速度, 网络带宽的消耗,
  • 可以避免构建镜像时将一些敏感文件及其他不需要的文件打包到镜像中, 从而提高镜像的安全性,

.dockerignore 文件的写法和 .gitignore 类似, 支持正则和通配符, 具体规则如下:

  • 每行为一个条目,
  • 以 # 开头的行为注释,
  • 空行被忽略,
  • 构建上下文路径为所有文件的根路径,

文件匹配规则具体语法如下:

规则 行为
/temp 匹配根路径下一级目录下所有以 temp 开头的文件或目录
//temp* 匹配根路径下两级目录下所有以 temp 开头的文件或目录
temp? 匹配根路径下以 temp 开头, 任意一个字符结尾的文件或目录
*/.go 匹配所有路径下以 .go 结尾的文件或目录, 即递归搜索所有路径
*.md
!README.md
匹配根路径下所有以 .md 结尾的文件或目录, 但 README.md 除外

注意: 如果两个匹配语法规则有包含或者重叠关系, 那么以后面的匹配规则为准

参考