# debug and list the docker build context so that you can minimmize it
#
# usage:
# docker build -f docker/context.Dockerfile -t test/buildcontext .
#
######################
FROM busybox
RUN mkdir /tmp/build/
# Add context to /tmp/build/
COPY . /tmp/build
# this last command outputs the list of files added to the build context:
RUN find /tmp/build/
6条答案
按热度按时间q35jwt9p1#
上面的答案很好,但是对于大多数情况有一个低技术的解决方案-
ncdu
。这个实用程序将显示漂亮的和交互式的树结构与大小。它有一个选项,将采取模式从一个文件和排除他们从扫描。所以你可以只做ncdu -X .dockerignore
。你会得到这样的东西:这与你在Docker图像中得到的非常接近。一个警告是,如果你在图像中添加一个点目录(如
.yarn
),它将不会在ncdu
输出中显示。gijlo24d2#
唯一的方法是将当前目录添加到特定目录并列出它。
尝试使用此Dockerfile进行构建:
构建时使用:
列出/tmp/build中的所有文件和目录:
fumotvh33#
从版本18.09开始,Docker有一个使用BuildKit后端导出上下文数据的选项。
默认情况下不启用,因此需要在调用
docker build
命令之前设置环境变量DOCKER_BUILDKIT=1
。如果当前目录中没有任何Dockerfile,以下命令也可以工作。
当您多次运行时,请记住删除之前使用
rm -r context
导出的内容。您还可以将上下文数据作为归档文件获取,然后使用
archivemount
命令进行装载:通过这两种方法,您可以使用
ncdu context
来探索结果。n3h0vuf24#
更新答案:自2017年以来,Docker建议使用
COPY
而不是ADD
,并加上@tlrobinson的注解,更简单的Dockerfile看起来如下所示:vawmfj5a5#
对我有效的是执行以下操作(基于此article)。
1.告诉Docker使用旧的构建工具包。在PowerShell中,这是:
$ENV:对接器构建套件=0
1.运行Docker构建,以便它报告正在进行的所有进度:
Docker构建--进度=普通BLAH
有了这两件事,你就可以在Docker文件中做一些像这样简单的事情:
这将给予您提供/app文件夹中所有内容的列表。
bq8i3lrv6#
下面是一个脚本,它将
docker build
发送的上下文tarball输出到Docker守护进程。