README.md

March 5, 2026 ยท View on GitHub

GitHub release GitHub marketplace CI workflow Test workflow Codecov

About

GitHub Action to set up Docker Buildx.

This action will create and boot a builder that can be used in the following steps of your workflow if you're using Buildx or the build-push action. By default, the docker-container driver will be used to be able to build multi-platform images and export cache using a BuildKit container.

Screenshot


Usage

name: ci

on:
  push:

jobs:
  buildx:
    runs-on: ubuntu-latest
    steps:
      -
        # Add support for more platforms with QEMU (optional)
        # https://github.com/docker/setup-qemu-action
        name: Set up QEMU
        uses: docker/setup-qemu-action@v4
      -
        name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v4

Configuring your builder

Customizing

inputs

The following inputs can be used as step.with keys:

List type is a newline-delimited string

driver-opts: |
  image=moby/buildkit:master
  network=host

CSV type must be a comma-delimited string

platforms: linux/amd64,linux/arm64
NameTypeDefaultDescription
versionStringBuildx version. (eg. v0.3.0, latest, https://github.com/docker/buildx.git#master)
nameStringName of the builder. If not specified, one will be generated or if it already exists, it will be used instead of creating a new one
driverStringdocker-containerSets the builder driver to be used
driver-optsListList of additional driver-specific options (eg. image=moby/buildkit:master)
buildkitd-flagsStringBuildKit daemon flags
buildkitd-config *StringBuildKit daemon config file
buildkitd-config-inline *StringSame as buildkitd-config but inline
useBooltrueSwitch to this builder instance
endpointStringOptional address for docker socket or context from docker context ls
platformsList/CSVFixed platforms for current node. If not empty, values take priority over the detected ones
appendYAMLAppend additional nodes to the builder
keep-stateBoolfalseKeep BuildKit state on cleanup. This is only useful on persistent self-hosted runners
cache-binaryBooltrueCache buildx binary to GitHub Actions cache backend
cleanupBooltrueCleanup temp files and remove builder at the end of a job

Important

If you set the buildkitd-flags input, the default flags (--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host) will be reset. If you want to retain the default behavior, make sure to include these flags in your custom buildkitd-flags value.

Note

buildkitd-config and buildkitd-config-inline are mutually exclusive.

outputs

The following outputs are available:

NameTypeDescription
nameStringBuilder name
driverStringBuilder driver
platformsStringBuilder node platforms (preferred and/or available)
nodesJSONBuilder nodes metadata

environment variables

The following official docker environment variables are supported:

NameTypeDefaultDescription
DOCKER_CONFIGString~/.dockerThe location of your client configuration files

Notes

nodes output

NameTypeDescription
nameStringNode name
endpointStringNode endpoint
driver-optsListOptions for the driver
statusStringNode status
buildkitd-flagsStringFlags for buildkitd daemon
buildkitStringBuildKit version
platformsStringPlatforms available

Example:

[
  {
    "name": "builder-8fa135e1-9bce-4a29-9368-46a09a1d750d0",
    "endpoint": "unix:///var/run/docker.sock",
    "status": "running",
    "buildkitd-flags": "--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host",
    "buildkit": "v0.27.1",
    "platforms": "linux/amd64,linux/amd64/v2,linux/amd64/v3,linux/386"
  }
]

Contributing

Want to contribute? Awesome! You can find information about contributing to this project in the CONTRIBUTING.md