variable "APT_MIRROR" { default = "cdn-fastly.deb.debian.org" } variable "DOCKER_DEBUG" { default = "" } variable "DOCKER_STATIC" { default = "1" } variable "DOCKER_LDFLAGS" { default = "" } variable "DOCKER_BUILDTAGS" { default = "" } variable "DOCKER_GITCOMMIT" { default = "HEAD" } # Docker version such as 23.0.0-dev. Automatically generated through Git ref. variable "VERSION" { default = "" } # The platform name, such as "Docker Engine - Community". variable "PLATFORM" { default = "" } # The product name, used to set version.ProductName, which is used to set # BuildKit's ExportedProduct variable in order to show useful error messages # to users when a certain version of the product doesn't support a BuildKit feature. variable "PRODUCT" { default = "" } # Sets the version.DefaultProductLicense string, such as "Community Engine". # This field can contain a summary of the product license of the daemon if a # commercial license has been applied to the daemon. variable "DEFAULT_PRODUCT_LICENSE" { default = "" } # The name of the packager (e.g. "Docker, Inc."). This used to set CompanyName # in the manifest. variable "PACKAGER_NAME" { default = "" } # GITHUB_REF is the actual ref that triggers the workflow and used as version # when tag is pushed: https://docs.github.com/en/actions/learn-github-actions/environment-variables#default-environment-variables variable "GITHUB_REF" { default = "" } # GITHUB_SHA is the commit SHA that triggered the workflow and used as commit. # https://docs.github.com/en/actions/learn-github-actions/environment-variables#default-environment-variables variable "GITHUB_SHA" { default = "" } # Special target: https://github.com/docker/metadata-action#bake-definition target "docker-metadata-action" { tags = ["moby-bin:local"] } # Defines the output folder variable "DESTDIR" { default = "" } function "bindir" { params = [defaultdir] result = DESTDIR != "" ? DESTDIR : "./bundles/${defaultdir}" } target "_common" { args = { BUILDKIT_CONTEXT_KEEP_GIT_DIR = 1 APT_MIRROR = APT_MIRROR DOCKER_DEBUG = DOCKER_DEBUG DOCKER_STATIC = DOCKER_STATIC DOCKER_LDFLAGS = DOCKER_LDFLAGS DOCKER_BUILDTAGS = DOCKER_BUILDTAGS DOCKER_GITCOMMIT = DOCKER_GITCOMMIT != "" ? DOCKER_GITCOMMIT : GITHUB_SHA VERSION = VERSION != "" ? VERSION : GITHUB_REF PLATFORM = PLATFORM PRODUCT = PRODUCT DEFAULT_PRODUCT_LICENSE = DEFAULT_PRODUCT_LICENSE PACKAGER_NAME = PACKAGER_NAME } } group "default" { targets = ["binary"] } target "_platforms" { platforms = [ "linux/amd64", "linux/arm/v5", "linux/arm/v6", "linux/arm/v7", "linux/arm64", "linux/ppc64le", "linux/s390x", "windows/amd64" ] } # # build dockerd and docker-proxy # target "binary" { inherits = ["_common"] target = "binary" output = [bindir(DOCKER_STATIC == "1" ? "binary" : "dynbinary")] } target "dynbinary" { inherits = ["binary"] output = [bindir("dynbinary")] args = { DOCKER_STATIC = "0" } } target "binary-cross" { inherits = ["binary", "_platforms"] } target "binary-smoketest" { inherits = ["_common"] target = "smoketest" output = ["type=cacheonly"] platforms = [ "linux/amd64", "linux/arm/v6", "linux/arm/v7", "linux/arm64", "linux/ppc64le", "linux/s390x" ] } # # same as binary but with extra tools as well (containerd, runc, ...) # target "all" { inherits = ["_common"] target = "all" output = [bindir(DOCKER_STATIC == "1" ? "binary" : "dynbinary")] } target "all-cross" { inherits = ["all", "_platforms"] } # # bin image # target "bin-image" { inherits = ["all", "docker-metadata-action"] output = ["type=docker"] } target "bin-image-cross" { inherits = ["bin-image"] output = ["type=image"] platforms = [ "linux/amd64", "linux/arm/v6", "linux/arm/v7", "linux/arm64", "linux/ppc64le", "linux/s390x", "windows/amd64" ] } # # dev # variable "SYSTEMD" { default = "false" } target "dev" { inherits = ["_common"] target = "dev" args = { SYSTEMD = SYSTEMD } tags = ["docker-dev"] output = ["type=docker"] }