编写.dockerignore
.dockerignore的作用和.gitignore类似,用于忽略或指定哪些文件不被ADD或COPY指令操作
匹配规则
其文件匹配规则遵循Go's func Match

其中通配符有星号、问号以及中括号
- 星号(
*)表示匹配任何非分隔字符序列 - 问号(
?)表示匹配任何单个非分隔符字符 - 中括号(
[)表示匹配位于字符范围内的字符
Docker还提供了一个特殊的通配符字符串**,用于匹配任何路径。比如**/*.go将匹配所有目录中以.go结尾的所有文件,包括生成上下文的根目录
以#开头的行被视为注释,不起作用
以!开头的匹配字符串表示指定匹配文件不被忽略
示例一
.dockerignore文件内容如下:
# comment
*/temp*
*/*/temp*
temp?
- 第一行是注释
- 第二行表示忽略所有二级目录中以
temp开头的文件 - 第三行表示忽略所有三级目录中以
temp开头的文件 - 第四行表示忽略根目录中以
temp开头,后跟一个字符的文件
示例二
使用感叹号!指定匹配文件不被忽略,还需要考虑其在.dockerignore文件中的使用位置
*.md
!README.md
除了README.md外的所有.md文件都被忽略
*.md
!README*.md
README-secret.md
此时README-secret.md同样会被忽略
*.md
README-secret.md
!README*.md
此时README-secret.md同样不会被忽略
示例三
可以通过.dockerignore文件忽略Dockerfile和.dockerignore文件。这些文件仍然被发送到守护进程,因为需要它们来完成工作。但是ADD和COPY指令不会将它们复制到镜像中