如何测试 dockerignore 文件?

Posted

技术标签:

【中文标题】如何测试 dockerignore 文件?【英文标题】:How to test dockerignore file? 【发布时间】:2016-12-21 03:54:51 【问题描述】:

看了.dockerignore documentation之后,想知道有没有办法测试呢?

示例

**/node_modules/

如何检查我的 dockerfile 是否忽略了正确的文件和目录?

【问题讨论】:

【参考方案1】:

一种方法是制作一个包含ADD 或COPY 指令的小型Dockerfile。

尝试在node_modules文件夹中添加或复制文件:不成功,那是因为.dockerignore

【讨论】:

【参考方案2】:

要详细分析构建上下文,您可以使用pwaller/docker-show-context。

$ go get -v -u github.com/pwaller/docker-show-context
$ cd ~/path/to/project/using/docker
$ docker-show-context

它输出有关构建的统计信息,例如文件大小和上传时间。

【讨论】:

我从未想过忽略 Mac 上的 .DS_Store。这是一个很酷的命令!【参考方案3】:

要扩展 VonC's suggestion,这里有一个示例构建命令,您可以使用它来使用当前文件夹的构建上下文创建图像:

docker image build --no-cache -t build-context -f - . <<EOF
FROM busybox
WORKDIR /build-context
COPY . .
CMD find .
EOF

创建后,运行容器并检查/build-context 目录的内容,其中包括.dockerignore 文件未排除的所有内容:

# run the default find command
docker container run --rm build-context

# or inspect it from a shell using
docker container run --rm -it build-context /bin/sh

然后您可以使用以下命令进行清理:

docker image rm build-context

【讨论】:

【参考方案4】:

要扩展BMitch 的答案(实现VonC 的答案),您可以使用一个简单的命令来完成:

docker build -f - . <<EOF
FROM busybox
COPY . /build-context
WORKDIR /build-context
RUN find .
EOF

CMD 切换到RUN 意味着您不必运行容器,因为构建将输出find . 的结果。

【讨论】:

以上是关于如何测试 dockerignore 文件?的主要内容,如果未能解决你的问题,请参考以下文章

docker~为什么没人说说.dockerignore

.dockerignore文件的用法

对于嵌套的忽略文件,Docker 构建有时会因“.dockerignore 找不到或排除的文件”而失败

有条件地忽略 COPY 上的 .dockerignore 文件

如何从 MacOS Dock VSCODE 中删除打开的文件夹

如何使用 Stacks 在 Mac 上保持桌面和 Dock 井井有条