.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/

你可能感兴趣的:(docker,dockerFile,dockerfile)