针对在云中构建进行优化
Docker Build Cloud 远程运行您的构建,而不是在您所在的计算机上运行 调用生成。这意味着客户端和构建器之间的文件传输 通过网络发生。
通过网络传输文件具有更高的延迟和较低的带宽 比本地转账。Docker Build Cloud 具有多项功能来缓解这种情况:
- 它使用附加的存储卷作为构建缓存,这使得读取和 写入缓存的速度非常快。
- 将构建结果加载回客户端只会拉取 与以前的版本相比发生了变化。
尽管进行了这些优化,但远程构建仍然会产生缓慢的上下文 传输和镜像加载,适用于大型项目,或者如果网络连接为 慢。以下是一些可以优化构建以进行转移的方法 更高效:
有关如何优化构建的更多信息,请参阅构建最佳实践。
Dockerignore 文件
使用.dockerignore
文件,
您可以明确说明您不想在
构建上下文。文件由您在
ignore-file 不会传输到远程构建器。
您可能希望添加到.dockerignore
文件是:
.git
— 跳过在 build 上下文中发送版本控制历史记录。注意 这意味着您将无法在构建步骤中运行 Git 命令, 如git rev-parse
.- 包含生成构件(如Binaries)的目录。生成工件 在开发过程中在本地创建。
- 软件包管理器的供应商目录,例如
node_modules
.
通常,您的.dockerignore
file 应该类似于
你的.gitignore
.
Slim 基础镜像
为您的FROM
instructions 中的 Dockerfile 可以
帮助减小最终镜像的大小。Alpine 镜像是提供所有作系统的最小 Docker 镜像的一个很好的示例
您期望从 Linux 容器获得的实用程序。
还有特殊scratch
镜像,
它什么都没有。用于创建静态链接的镜像
Binaries。
多阶段构建
多阶段构建可以使您的构建运行得更快, 因为阶段可以并行运行。它还可以使您的最终结果更小。 编写 Dockerfile 时,最终运行时阶段使用 尽可能小的基本镜像,仅包含程序所需的资源 运行。
也可以从其他镜像或阶段复制资源,
使用 DockerfileCOPY --from
指令。这种技术可以减少
最后阶段的层数以及这些层的大小。
在 build 中获取远程文件
如果可能,您应该从构建中的远程位置获取文件。 而不是将文件捆绑到 build 上下文中。在 Docker Build Cloud 服务器直接更好,因为它可能会更快 而不是使用 build 上下文传输文件。
您可以在构建过程中使用Dockerfile 文件ADD
指令,
或在您的RUN
使用工具的说明wget
和rsync
.
多线程工具
您在构建说明中使用的某些工具可能不会使用多个
cores 的 intent 来获取。一个这样的例子是make
它使用单个线程
default,除非您指定make --jobs=<n>
选择。对于构建步骤
涉及此类工具,请尝试检查是否可以使用
并行。