​.dockerignore 文件 怎么用?

​.dockerignore 文件:

在 docker CLI 将上下文发送到 docker 守护程序之前,它看起来 在上下文的根目录中命名的文件。 如果此文件存在,CLI 将修改上下文以排除文件和 与其中的模式匹配的目录。这有助于避免 不必要地将大型或敏感文件和目录发送到 守护程序,并可能使用 或 将它们添加到镜像中。.dockerignoreADDCOPY

CLI 将文件解释为换行符分隔 类似于 Unix shell 的文件 glob 的模式列表。对于 为了匹配,上下文的根被认为是两者 工作目录和根目录。例如,模式和两者都排除在 git 的子目录或根目录中命名的文件或目录 存储库位于 。两者都不排除其他任何内容。.dockerignore/foo/barfoo/barbarfooPATHURL

如果文件中的一行以第 1 列开头,则此行为 被视为注释,在 CLI 解释之前被忽略。.dockerignore#

下面是一个示例文件:.dockerignore

# comment
*/temp*
*/*/temp*
temp?

此文件会导致以下生成行为:

统治行为
# comment忽视。
*/temp*排除名称以根目录的任何直接子目录中开头的文件和目录。例如,排除纯文件,目录 。temp/somedir/temporary.txt/somedir/temp
*/*/temp*从根目录下两级的任何子目录中排除以 开头的文件和目录。例如,被排除。temp/somedir/subdir/temporary.txt
temp?排除根目录中名称为一个字符扩展名的文件和目录。例如,并且被排除在外。temp/tempa/tempb

匹配是使用 Go 的文件路径完成的。匹配规则。一个 预处理步骤删除前导和尾随空格和 使用 Go 的文件路径消除和元素。干净。线 预处理后为空白的将被忽略。...

超越 Go 的文件路径。匹配规则,Docker还支持特殊的 匹配任意数量的目录(包括 零)。例如,将排除在所有目录中找到的所有以 结尾的文件,包括构建上下文的根目录。****/*.go.go

以(感叹号)开头的行可用于设置例外 到排除项。下面是一个示例文件, 使用此机制:!.dockerignore

*.md
!README.md

除 Markdown 文件外,所有降价文件都从上下文中排除。README.md

例外规则的放置会影响行为:最后一个 与特定文件匹配的行确定 是否包括或排除。请考虑以下示例:!.dockerignore

*.md
!README*.md
README-secret.md

上下文中不包含除 以外的自述文件之外的降价文件。README-secret.md

现在考虑这个例子:

*.md
README-secret.md
!README*.md

包括所有自述文件。中间线没有效果,因为匹配并排在最后。!README*.mdREADME-secret.md

您甚至可以使用该文件来排除 和 文件。这些文件仍被发送到守护程序 因为它需要他们来完成它的工作。但是和说明 不要将它们复制到映像中。.dockerignoreDockerfile.dockerignoreADDCOPY

最后,您可能希望指定要包含在 上下文,而不是排除哪个。要实现此目的,请将 第一个模式,后跟一个或多个异常模式。*!

下面是本人写的简单的 .dockerignore 文件

#忽略build/output目录
build/output

#忽略.md文件和.go文件
*.md
*.go

# 忽略 macOS 文件
.DS_Store

# 忽略 Visual Studio Code 相关文件
.vscode/
.devcontainer/

# 忽略 JetBrains 文件
.idea/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值