如何在Docker中忽略文件
简介
在这篇文章中,我们将学习docker中的忽略文件。如何创建一个忽略文件,以及如何用各种方法将文件和文件夹添加到忽略文件中。所有先决条件的知识都以逐步的方式提到。在不了解代码行业对ignore文件的要求的情况下,不要直接跳到实现。
什么是被忽略的文件
忽略在不同系统中创建的文件,比如在Git仓库和Dockerifle中。这些文件有助于排除一些文件和目录在输出中被使用或复制。dockerfile的输出是图像,而git的输出可能是提交。DevOps中最常用的一些忽略文件的例子是 “gitignore “和 “dockerignore”。
要忽略的文件类型
主要任务是忽视事物。这些东西可以是不同类型的。比如它可以是python中的程序文件,也可以是ReactJS应用目录中的子目录。所有这些文件都在下面的列表中提到。
- Directory
-
文件 – 文本或程序文件
-
子目录
-
.dockerignore本身
忽略这些文件的必要性是因为我们在最终产品中不再需要这些文件。这些文件只需要在主机上。
方法
在本节中,我们将学习如何通过将不同类型的文件添加到dockerignore文件中来排除它们。
所有要在dockerignore中出现的文件都应该提到docker context目录。Docker上下文是指所有需要添加到镜像中的有用文件所在的目录路径。大多数情况下,我们在构建镜像时使用.(点)作为docker context。
创建一个”.dockerignore “文件
.dockerignore “应该在你的Dockerfile存在的地方创建,否则它将无法工作。使用下面的命令来创建和排除各种类型的文件。
我们已经创建了一个目录结构,用于解释所有这些方法。
输出
打开ignore文件,从上面的目录结构中添加各种文件。
有一些规则可以在docker ignore文件中添加不同种类的文件、目录和注释。
在dockerignore文件中添加一个注释
在开始注释的时候使用#,会将该行视为一个注释。
忽略docker上下文或根目录级别的目录
这将忽略存在于docker上下文根层的目录(dir1 & dir2)。参考一下上面的目录结构。
忽略所有的文件和目录
排除所有名称中带有 “file “的文件和目录。这些文件将只来自根目录。
忽略docker上下文中最多一级的子目录
忽略根目录下任何子目录中的文件以及目录。
忽略一个子目录,直到docker上下文的两层以下。
这与上述方法非常相似。
要重新包括一个文件
有一些特殊情况,当我们想包括一个先前被排除在外的特定文件。
假设你正在创建一个Python容器镜像。根目录包含了所有来自不同贡献者的python程序,所以你不能删除它们,你只能使用这个根目录。你可以执行下面的例子来排除所有的Python程序,然后重新包含你的Python程序文件。
第1步 – 假设根目录中充满了pythons文件
第2步 − 创建一个.dockerignore文件,如下所示
这个过程会更快,而且不需要将不需要的东西COPY/ADD到docker容器镜像中。
实现
这里我们要创建一个完整的环境,使用Dockerfile、.dockerignore,并使用这些文件构建一个容器镜像。使用的目录结构与方法部分中提到的相同。
第1步 − 创建一个Docker文件并添加代码。
输入
保存该文件。
第2步 − 创建一个.dockerignore文件
输入
保存该文件。
第3步 − 构建镜像并检查构建输出
输出
输出显示,除了dockerignore文件中的文件外,所有的文件都被复制到了容器镜像中。
总结
在这篇文章中,我们对”.dockerignore “文件进行了360度的全面探讨。排除、包括,以及这个文件的重要性都被清楚地说明了。为了亲身体验这个主题,我们创建了不同的环境,并通过上述方法来实现。