定义额外的构建上下文和链接目标
除了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 且无法轻松合并为一个时,才建议使用这种情况。