【发布时间】:2021-04-28 19:29:24
【问题描述】:
是否可以列出从构建上下文复制到映像中的所有文件,或以任何其他方式影响映像的最终内容?
我需要这个来进行依赖跟踪;我正在为一个项目设计一个构建系统,该项目涉及在本地开发环境中构建多个图像并从中运行容器。我需要针对快速的代码构建调试周期进行优化,因此我需要能够尽可能避免调用docker build。了解构建上下文中最终影响映像的确切文件集将允许我将这些文件指定为调用docker build 的构建步骤的跟踪依赖项,并避免不必要的重建。
我不需要提前生成这个文件列表,虽然这是首选。如果没有工具可以预先生成它,但是有办法从构建的图像中获取它,那也可以;我使用的构建工具能够记录构建后步骤发现的动态依赖关系。
我敏锐地意识到的事情,并且我仍然做出明智的决定认为追求这条道路是值得的:
- 我知道如此跟踪的依赖项数量可能非常庞大。我相信构建工具可以处理它。
- 我知道除了构建上下文中的文件之外,Docker 映像还有其他类型的依赖项。这也可以通过跟踪
docker build之外的那些依赖关系来解决。与构建上下文中的文件不同,这些依赖项的数量要少得多(即 Dockerfile 的RUN命令显式从 Internet 获取的文件),或者已经解决了获取此类依赖项的详尽列表的问题(例如,获得的依赖项使用像apt-get这样的包管理器是单独建模的,安装RUNs是从模型生成到Dockerfile中的)。
【问题讨论】:
-
整个目的是获取可以用来决定是否可以跳过发出
docker build的信息。如果获取此信息需要发出docker build,那就达不到目的了。
标签: docker dockerfile