如何测试 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 找不到或排除的文件”而失败
有条件地忽略 COPY 上的 .dockerignore 文件