定义额外的构建上下文和链接目标

除了context定义构建上下文的主键之外,每个目标还可以使用 key 定义的映射来定义其他命名上下文 contexts。这些值映射到构建命令--build-context中的标志 。

在 Dockerfile 内部,这些上下文可以与FROM指令或 --from标志一起使用。

支持的上下文值有:

  • 本地文件系统目录
  • 容器镜像
  • Git 网址
  • HTTP URL
  • Bake 文件中另一个目标的名称

固定高山图像

# syntax=docker/dockerfile:1
FROM alpine
RUN echo "Hello world"
# docker-bake.hcl
target "app" {
  contexts = {
    alpine = "docker-image://alpine:3.13"
  }
}

使用辅助源目录

# syntax=docker/dockerfile:1
FROM scratch AS src

FROM golang
COPY --from=src . .
# docker-bake.hcl
target "app" {
  contexts = {
    src = "../path/to/source"
  }
}

使用一个目标的结果作为另一个目标的基础图像

要将一个目标的结果用作另一个目标的构建上下文,请指定带有target:前缀的目标名称。

# syntax=docker/dockerfile:1
FROM baseapp
RUN echo "Hello world"
# docker-bake.hcl
target "base" {
  dockerfile = "baseapp.Dockerfile"
}

target "app" {
  contexts = {
    baseapp = "target:base"
  }
}

在大多数情况下,您应该只使用具有多个目标的单个多阶段 Dockerfile 来实现类似的行为。仅当您有多个 Dockerfile 且无法轻松合并为一个时,才建议使用这种情况。