编写.dockerignore

参考:.dockerignore file

.dockerignore的作用和.gitignore类似,用于忽略或指定哪些文件不被ADDCOPY指令操作

匹配规则

其文件匹配规则遵循Go's func Match

其中通配符有星号、问号以及中括号

Docker还提供了一个特殊的通配符字符串**,用于匹配任何路径。比如**/*.go将匹配所有目录中以.go结尾的所有文件,包括生成上下文的根目录

#开头的行被视为注释,不起作用

!开头的匹配字符串表示指定匹配文件不被忽略

示例一

.dockerignore文件内容如下:

# comment
*/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文件。这些文件仍然被发送到守护进程,因为需要它们来完成工作。但是ADDCOPY指令不会将它们复制到镜像中