云计算核心技术Docker教程:.dockerignore文件介绍
时间:2020-09-27 23:20:10
作者:重庆seo小潘
来源:
在docker CLI将上下文发送到docker守护程序之前,它会在上下文的根目录中查找名为.dockerignore的文件。如果此文件存在,则CLI会修改上下文以排除与其中的模式匹配的文件和目录。这有助于避免不必要地将大型文件或敏感文件和目录发送到守护程序,并避免使用A
在docker CLI将上下文发送到docker守护程序之前,它会在上下文的根目录中查找名为.dockerignore的文件。如果此文件存在,则CLI会修改上下文以排除与其中的模式匹配的文件和目录。这有助于避免不必要地将大型文件或敏感文件和目录发送到守护程序,并避免使用ADD或将它们添加到映像中COPY。
CLI将.dockerignore文件解释为以换行符分隔的模式列表,类似于Unix Shell的文件组。为了匹配,上下文的根被认为是工作目录和根目录。例如,路径 /foo/bar和foo/bar两个排除命名的文件或目录bar 的foo子目录PATH或位于Git仓库的根URL。两者都不排除其他任何东西。
如果.dockerignore文件中的一行以第#1列开头,则该行将被视为注释,并且在CLI解释之前将被忽略。
这是一个示例.dockerignore文件:
# comment
*/temp*
*/*/temp*
temp?
此文件导致以下生成行为:
使用Go的filepath.Match规则进行匹配 。预处理步骤使用Go的filepath.Clean除去开头和结尾的空格,并消除.和..元素 。预处理后空白的行将被忽略。
除了Go的filepath.Match规则外,Docker还支持一个特殊的通配符字符串**,该字符串匹配任意数量的目录(包括零个)。例如,**/*.go将排除.go 在所有目录(包括构建上下文的根目录)中找到的所有以结尾结尾的文件。
以!(感叹号)开头的行可用于排除例外。以下是.dockerignore使用此机制的示例文件:
*.md
!README.md
除 README.md上下文之外,所有.md文件都排除在外。