在 Bake 中使用额外的上下文
Table of contents
除了定义构建上下文的主 context 键之外,每个目标还可以使用键为 contexts 的映射来定义
额外的命名上下文。这些值映射到
build 命令 中的
--build-context 标志。
在 Dockerfile 内部,这些上下文可用于 FROM 指令或 --from 标志。
支持的上下文值包括:
- 本地文件系统目录
- 容器镜像
- Git URL
- HTTP URL
- Bake 文件中另一个目标的名称
固定 alpine 镜像
Dockerfile
# syntax=docker/dockerfile:1
FROM alpine
RUN echo "Hello world"
docker-bake.hcl
target "app" {
contexts = {
alpine = "docker-image://alpine:3.13"
}
}使用辅助源目录
Dockerfile
FROM golang
COPY --from=src . .
docker-bake.hcl
# Running `docker buildx bake app` will result in `src` not pointing
# to some previous build stage but to the client filesystem, not part of the context.
target "app" {
contexts = {
src = "../path/to/source"
}
}使用目标作为构建上下文
要将一个目标的构建结果用作另一个目标的构建上下文,请使用 target: 前缀指定目标名称。
baseapp.Dockerfile
FROM scratch
Dockerfile
# 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 时,才推荐使用这种情况。