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