diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 20d72278..d92f876f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,6 +12,7 @@ on: - 'master' env: + REPO_SLUG: "docker/buildx-bin" REPO_SLUG_ORIGIN: "moby/buildkit:master" CACHEKEY_BINARIES: "binaries" PLATFORMS: "linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/s390x,linux/ppc64le,linux/riscv64" @@ -173,6 +174,38 @@ jobs: name: buildx path: ./release-out/* if-no-files-found: error + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - + name: Docker meta + id: meta + uses: docker/metadata-action@v3 + with: + images: | + ${{ env.REPO_SLUG }} + tags: | + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}} + - + name: Login to DockerHub + if: github.event_name != 'pull_request' + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - + name: Build and push image + uses: docker/build-push-action@v2 + with: + context: . + target: binaries + push: ${{ github.event_name != 'pull_request' }} + cache-from: type=local,src=/tmp/.buildx-cache/${{ env.CACHEKEY_BINARIES }} + platforms: ${{ env.PLATFORMS }},darwin/amd64,darwin/arm64,windows/amd64,windows/arm64 + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} - name: GitHub Release if: startsWith(github.ref, 'refs/tags/v') diff --git a/README.md b/README.md index 09a5a389..298f644f 100644 --- a/README.md +++ b/README.md @@ -20,25 +20,28 @@ Key features: # Table of Contents - [Installing](#installing) + - [Docker](#docker) + - [Binary release](#binary-release) + - [From `Dockerfile`](#from-dockerfile) - [Building](#building) - + [with Docker 18.09+](#with-docker-1809) - + [with buildx or Docker 19.03](#with-buildx-or-docker-1903) + - [with Docker 18.09+](#with-docker-1809) + - [with buildx or Docker 19.03](#with-buildx-or-docker-1903) - [Getting started](#getting-started) - * [Building with buildx](#building-with-buildx) - * [Working with builder instances](#working-with-builder-instances) - * [Building multi-platform images](#building-multi-platform-images) - * [High-level build options](#high-level-build-options) -- [Documentation](#documentation) - + [`buildx build [OPTIONS] PATH | URL | -`](docs/reference/buildx_build.md) - + [`buildx create [OPTIONS] [CONTEXT|ENDPOINT]`](docs/reference/buildx_create.md) - + [`buildx use NAME`](docs/reference/buildx_use.md) - + [`buildx inspect [NAME]`](docs/reference/buildx_inspect.md) - + [`buildx ls`](docs/reference/buildx_ls.md) - + [`buildx stop [NAME]`](docs/reference/buildx_stop.md) - + [`buildx rm [NAME]`](docs/reference/buildx_rm.md) - + [`buildx bake [OPTIONS] [TARGET...]`](docs/reference/buildx_bake.md) - + [`buildx imagetools create [OPTIONS] [SOURCE] [SOURCE...]`](docs/reference/buildx_imagetools_create.md) - + [`buildx imagetools inspect NAME`](docs/reference/buildx_imagetools_inspect.md) + - [Building with buildx](#building-with-buildx) + - [Working with builder instances](#working-with-builder-instances) + - [Building multi-platform images](#building-multi-platform-images) + - [High-level build options](#high-level-build-options) +- [Documentation](docs/reference) + - [`buildx build [OPTIONS] PATH | URL | -`](docs/reference/buildx_build.md) + - [`buildx create [OPTIONS] [CONTEXT|ENDPOINT]`](docs/reference/buildx_create.md) + - [`buildx use NAME`](docs/reference/buildx_use.md) + - [`buildx inspect [NAME]`](docs/reference/buildx_inspect.md) + - [`buildx ls`](docs/reference/buildx_ls.md) + - [`buildx stop [NAME]`](docs/reference/buildx_stop.md) + - [`buildx rm [NAME]`](docs/reference/buildx_rm.md) + - [`buildx bake [OPTIONS] [TARGET...]`](docs/reference/buildx_bake.md) + - [`buildx imagetools create [OPTIONS] [SOURCE] [SOURCE...]`](docs/reference/buildx_imagetools_create.md) + - [`buildx imagetools inspect NAME`](docs/reference/buildx_imagetools_inspect.md) - [Setting buildx as default builder in Docker 19.03+](#setting-buildx-as-default-builder-in-docker-1903) - [Contributing](#contributing) @@ -60,6 +63,17 @@ Change the permission to execute: chmod a+x ~/.docker/cli-plugins/docker-buildx ``` +### From `Dockerfile` + +Here is how to use buildx inside a Dockerfile through the [`docker/buildx-bin`](https://hub.docker.com/r/docker/buildx-bin) image: + +```Dockerfile +FROM docker +COPY --from=docker/buildx-bin:latest /buildx /usr/libexec/docker/cli-plugins/docker-buildx +RUN docker buildx version +``` + + # Building