Usar Bake con contextos adicionales
Además de la clave principal context que define el contexto de compilación, cada objetivo (target) también puede definir contextos con nombre adicionales con un mapa definido con la clave contexts. Estos valores se asignan a la bandera --build-context en el
comando de compilación.
Dentro del Dockerfile, estos contextos se pueden utilizar con la instrucción FROM o con la bandera --from.
Los valores de contexto admitidos son:
- Directorios del sistema de archivos local
- Imágenes de contenedores
- URLs de Git
- URLs HTTP
- Nombre de otro objetivo (target) en el archivo de Bake
Fijar la imagen de alpine
# syntax=docker/dockerfile:1
FROM alpine
RUN echo "Hello world"target "app" {
contexts = {
alpine = "docker-image://alpine:3.13"
}
}Usar un directorio de origen secundario
FROM golang
COPY --from=src . .# Ejecutar `docker buildx bake app` hará que `src` no apunte
# a alguna etapa de compilación previa, sino al sistema de archivos del cliente, fuera del contexto.
target "app" {
contexts = {
src = "../path/to/source"
}
}Usar un objetivo (target) como contexto de compilación
Para usar el resultado de un objetivo como contexto de compilación de otro, especifica el nombre del objetivo con el prefijo target:.
FROM scratch# syntax=docker/dockerfile:1
FROM baseapp
RUN echo "Hello world"target "base" {
dockerfile = "baseapp.Dockerfile"
}
target "app" {
contexts = {
baseapp = "target:base"
}
}En la mayoría de los casos, simplemente deberías utilizar un único Dockerfile multi-etapa (multi-stage) con múltiples objetivos para lograr un comportamiento similar. Este caso de uso solo se recomienda cuando tienes múltiples Dockerfiles que no se pueden fusionar fácilmente en uno solo.