From ec6211d572fbe1f393fec53dc2871708e7044dfa Mon Sep 17 00:00:00 2001 From: Kyle Harding Date: Thu, 14 Nov 2019 09:32:14 -0500 Subject: [PATCH] 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 --- Dockerfile | 26 ++++++++++++++++++-------- Makefile | 13 +++++++++++++ 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7a142e6b..76cc626f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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"] diff --git a/Makefile b/Makefile index 7aef9225..72884884 100644 --- a/Makefile +++ b/Makefile @@ -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) ./...