1ARG GO_VERSION=1.13.15
2ARG BUILDX_COMMIT=v0.5.1
3ARG BUILDX_REPO=https://github.com/docker/buildx.git
4
5FROM golang:${GO_VERSION}-buster AS build
6ARG BUILDX_REPO
7RUN git clone "${BUILDX_REPO}" /buildx
8WORKDIR /buildx
9ARG BUILDX_COMMIT
10RUN git fetch origin "${BUILDX_COMMIT}":build && git checkout build
11ARG GOOS
12ARG GOARCH
13# Keep these essentially no-op var settings for debug purposes.
14# It allows us to see what the GOOS/GOARCH that's being built for is.
15RUN GOOS="${GOOS}" GOARCH="${GOARCH}" BUILDX_COMMIT="${BUILDX_COMMIT}"; \
16    pkg="github.com/docker/buildx"; \
17    ldflags="\
18      -X \"${pkg}/version.Version=$(git describe --tags)\" \
19      -X \"${pkg}/version.Revision=$(git rev-parse --short HEAD)\" \
20      -X \"${pkg}/version.Package=buildx\" \
21    "; \
22    go build -mod=vendor -ldflags "${ldflags}" -o /usr/bin/buildx ./cmd/buildx
23
24FROM golang:${GO_VERSION}-buster
25COPY --from=build /usr/bin/buildx /usr/bin/buildx
26ENTRYPOINT ["/usr/bin/buildx"]
27