support for multiarch docker manifest

merged from https://github.com/klutchell/cloudflared
requires 'docker login' prior to 'make manifest' so the image can be pushed
This commit is contained in:
Kyle Harding 2019-11-14 09:32:14 -05:00
parent c5af83af66
commit ec6211d572
No known key found for this signature in database
GPG Key ID: FCE824DD49498041
2 changed files with 31 additions and 8 deletions

View File

@ -1,12 +1,22 @@
FROM golang:1.12 as builder
WORKDIR /go/src/github.com/cloudflare/cloudflared/
RUN apt-get update && apt-get install -y --no-install-recommends upx
# Run after `apt-get update` to improve rebuild scenarios
COPY . .
RUN make cloudflared
RUN upx --no-progress cloudflared
FROM golang:1.12-alpine as builder
WORKDIR /go/src/github.com/cloudflare/cloudflared/
COPY . .
ENV GO111MODULE on
ENV CGO_ENABLED 0
RUN apk add --no-cache build-base=0.5-r1 git=2.22.0-r0 upx=3.95-r2 \
&& make cloudflared \
&& upx --no-progress cloudflared
FROM scratch
FROM gcr.io/distroless/base
COPY --from=builder /go/src/github.com/cloudflare/cloudflared/cloudflared /usr/local/bin/
ENTRYPOINT ["cloudflared", "--no-autoupdate"]
CMD ["version"]
RUN ["cloudflared", "--version"]

View File

@ -6,6 +6,8 @@ IMPORT_PATH := github.com/cloudflare/cloudflared
PACKAGE_DIR := $(CURDIR)/packaging
INSTALL_BINDIR := usr/local/bin
DOCKER_CLI_EXPERIMENTAL := enabled
EQUINOX_FLAGS = --version="$(VERSION)" \
--platforms="$(EQUINOX_BUILD_PLATFORMS)" \
--app="$(EQUINOX_APP_ID)" \
@ -35,6 +37,17 @@ cloudflared: tunnel-deps
container:
docker build -t cloudflare/cloudflared:"$(VERSION)" .
.PHONY: manifest
manifest:
docker run --rm --privileged aptman/qus -s -- -r
docker run --rm --privileged aptman/qus -s -- -p
-docker buildx create --use --name cloudflared
docker buildx inspect --bootstrap
docker buildx build . \
-t cloudflare/cloudflared:"$(VERSION)" \
--platform=linux/amd64,linux/arm64,linux/386,linux/arm/v7,linux/arm/v6 \
--pull --push
.PHONY: test
test: vet
go test -v -mod=vendor -race $(VERSION_FLAGS) ./...