总目录索引:K8s从入门到放弃系列

    该.dockerignore文件是隐藏文件也是一个工具,可以帮助你定义你真正需要的Docker构建上下文。使用此文件,你可以为这些文件和文件夹规则指定忽略规则和异常,这些规则和异常将不包含在构建上下文中,因此不会打包到存档中并上载到Docker服务器。

1、dockerignore语法

    该.dockerignore文件类似于gitignore该git工具使用的文件。与.gitignore文件类似,它允许你为生成构建上下文时Docker客户端应忽略的文件和文件夹指定模式。虽然.dockerignore用于描述忽略模式的文件语法类似于.gitignore,但它并不相同。

    该.dockerignore模式匹配的语法是基于filepath.Match()和filepath.clean的功能,包括一些补充。如:

Docker还支持一个**匹配任意数量目录(包括零)的特殊通配符字符串。例如,**/*.go将排除.go 在所有目录中找到的以该结尾的所有文件,包括构建上下文的根。

2、以下是完整的语法.dockerignore:

pattern:
{term}
术语:
'*'      匹配任何非分隔符字符序列
'?'     匹配任何单个非分隔符
'['['^'] {character-range}']'
字符类(必须是非空的)
c匹配字符c  (c!='*','?','\\','[')
'\\'    c匹配字符c
字符范围:
c匹配字符c  (c!='\\',' - ',']')
'\\'    c匹配字符c
lo' - 'hi匹配字符c for lo< = c< = hi
补充:
'**'    匹配任意数量的目录(包括零)
'!'     行开头! (感叹号)可用于排除例外情况
以此字符开头的'#'行将被忽略:将其用于评论

3、示例

#ignore除了README-secret.md以外的所有README*.md和旁边的所有markdown文件(md)格式的都不要
*.MD
!README*.MD
README-secret.md

#ignore所有文件夹中的所有*.class文件,包括构建根目录
**/*.class

#ignore .git和.cache文件夹
.git
.cache

# 排除名称以temp根目录的任何直接子目录开头的文件或者目录,如/somedir/tempfile.txt,录/somedir/temp/
*/temp*

# temp从以下两级以下的任何子目录开始排除文件和目录。例如,/somedir/subdir/temporary.txt被排除在外。
*/*/temp*

# 排除根目录中的文件和目录,其名称是单字符扩展名temp。例如,/tempa与/tempb被排除在外
temp?

参考文章:https://www.linuxea.com/2297.html