Docker 的 BuildKit 工具现在支持 heredoc 语法,这一新特性可以简化 Dockerfile 中的多行 RUN 指令和内联配置文件的创建。
BuildKit 简介
BuildKit 是一个用于将源代码转换为构建工件的工具集,它是下一代的 Docker 镜像构建器。它具有比基础构建器更多的功能,包括更整洁的构建日志输出、更快和更缓存高效的构建、并发构建等。你可以通过设置环境变量 DOCKER_BUILDKIT=1 或使用 docker buildx 命令来启用它。
使用 heredoc
要开始使用 heredoc,你需要在 Dockerfile 的最顶部添加 #syntax=docker/dockerfile:1.3-labs,这样 BuildKit 就会找到并下载正确的镜像,然后用它来构建镜像。 使用 heredoc 语法,你可以在同一个 RUN 指令中执行多行命令,例如:
|
|
为什么使用 heredoc?
使用 heredoc 可以避免每行末尾需要添加反斜杠(\)的问题,并且还可以减少 Docker 镜像的层数,从而减小镜像大小和构建时间。
更多用法
除了基础用法外,heredoc 还支持更复杂的用例。例如,你可以用 Python 来编写复杂的设置脚本:
|
|
文件操作
Heredocs 还允许你创建内联文件,这在构建需要简单配置文件的镜像时非常有用:
|
|
总结
Heredoc 语法是 Docker BuildKit 的一个非常有用的新特性,它使 Dockerfile 更加简洁和高效。虽然这个功能目前还只在 staging 前端中可用,但很快就会在正式版本中推出。