From 068c2c59ba1cb91ada581acc263df888ebff55e8 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Mon, 25 May 2020 14:18:54 +0200 Subject: [PATCH] Enhanced Dockerfile --- Dockerfile | 35 ++++++++++++----------------------- 1 file changed, 12 insertions(+), 23 deletions(-) diff --git a/Dockerfile b/Dockerfile index ea88829a..05b599b3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,25 +1,17 @@ -# syntax=docker/dockerfile:experimental -FROM --platform=${BUILDPLATFORM:-linux/amd64} golang:1.13-alpine as builder +FROM --platform=${BUILDPLATFORM:-linux/amd64} tonistiigi/xx:golang AS xgo +FROM --platform=${BUILDPLATFORM:-linux/amd64} golang:1.13-alpine AS builder ARG BUILD_DATE ARG VCS_REF -ARG VERSION +ARG VERSION=dev + +ENV CGO_ENABLED 0 +ENV GO111MODULE on +ENV GOPROXY https://goproxy.io +COPY --from=xgo / / ARG TARGETPLATFORM -ARG BUILDPLATFORM -RUN printf "I am running on ${BUILDPLATFORM:-linux/amd64}, building for ${TARGETPLATFORM:-linux/amd64}\n$(uname -a)\n" \ - && $(case ${TARGETPLATFORM:-linux/amd64} in \ - "linux/amd64") echo "GOOS=linux GOARCH=amd64" > /tmp/.env ;; \ - "linux/arm/v6") echo "GOOS=linux GOARCH=arm GOARM=6" > /tmp/.env ;; \ - "linux/arm/v7") echo "GOOS=linux GOARCH=arm GOARM=7" > /tmp/.env ;; \ - "linux/arm64") echo "GOOS=linux GOARCH=arm64" > /tmp/.env ;; \ - "linux/386") echo "GOOS=linux GOARCH=386" > /tmp/.env ;; \ - "linux/ppc64le") echo "GOOS=linux GOARCH=ppc64le" > /tmp/.env ;; \ - "linux/s390x") echo "GOOS=linux GOARCH=s390x" > /tmp/.env ;; \ - *) echo "TARGETPLATFORM ${TARGETPLATFORM} not found..." && exit 1 ;; \ - esac) \ - && cat /tmp/.env -RUN env $(cat /tmp/.env | xargs) go env +RUN go env RUN apk --update --no-cache add \ build-base \ @@ -29,15 +21,12 @@ RUN apk --update --no-cache add \ WORKDIR /app -ENV GO111MODULE on -ENV GOPROXY https://goproxy.io COPY go.mod . COPY go.sum . -RUN env $(cat /tmp/.env | xargs) go mod download -COPY . ./ +RUN go mod download -ARG VERSION=dev -RUN env $(cat /tmp/.env | xargs) go build -ldflags "-w -s -X 'main.version=${VERSION}'" -v -o diun cmd/main.go +COPY . ./ +RUN go build -ldflags "-w -s -X 'main.version=${VERSION}'" -v -o diun cmd/main.go FROM --platform=${TARGETPLATFORM:-linux/amd64} alpine:latest