github.com/hairyhenderson/gomplate/v3@v3.11.7/Dockerfile (about) 1 # syntax=docker/dockerfile:1.3.1-labs 2 FROM --platform=linux/amd64 hairyhenderson/upx:3.94 AS upx 3 4 FROM --platform=linux/amd64 golang:1.21-alpine AS build 5 6 ARG TARGETOS 7 ARG TARGETARCH 8 ARG TARGETVARIANT 9 ENV GOOS=$TARGETOS GOARCH=$TARGETARCH 10 11 RUN apk add --no-cache make git 12 13 WORKDIR /go/src/github.com/hairyhenderson/gomplate 14 COPY go.mod /go/src/github.com/hairyhenderson/gomplate 15 COPY go.sum /go/src/github.com/hairyhenderson/gomplate 16 17 RUN --mount=type=cache,id=go-build-${TARGETOS}-${TARGETARCH}${TARGETVARIANT},target=/root/.cache/go-build \ 18 --mount=type=cache,id=go-pkg-${TARGETOS}-${TARGETARCH}${TARGETVARIANT},target=/go/pkg \ 19 go mod download -x 20 21 COPY . /go/src/github.com/hairyhenderson/gomplate 22 23 RUN --mount=type=cache,id=go-build-${TARGETOS}-${TARGETARCH}${TARGETVARIANT},target=/root/.cache/go-build \ 24 --mount=type=cache,id=go-pkg-${TARGETOS}-${TARGETARCH}${TARGETVARIANT},target=/go/pkg \ 25 make build 26 RUN mv bin/gomplate* /bin/ 27 28 FROM --platform=linux/amd64 alpine:3.18 AS compress 29 30 ARG TARGETOS 31 ARG TARGETARCH 32 ARG TARGETVARIANT 33 34 RUN apk add --no-cache \ 35 make \ 36 libgcc libstdc++ ucl 37 38 ENV GOOS=$TARGETOS GOARCH=$TARGETARCH 39 WORKDIR /go/src/github.com/hairyhenderson/gomplate 40 COPY Makefile . 41 RUN mkdir bin 42 43 COPY --from=upx /usr/bin/upx /usr/bin/upx 44 COPY --from=build bin/* bin/ 45 46 RUN make compress 47 RUN mv bin/gomplate* /bin/ 48 49 FROM scratch AS gomplate-linux 50 51 ARG VCS_REF 52 ARG TARGETOS 53 ARG TARGETARCH 54 ARG TARGETVARIANT 55 56 LABEL org.opencontainers.image.revision=$VCS_REF \ 57 org.opencontainers.image.source="https://github.com/hairyhenderson/gomplate" 58 59 COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt 60 COPY --from=build /bin/gomplate_${TARGETOS}-${TARGETARCH}${TARGETVARIANT} /gomplate 61 62 ENTRYPOINT [ "/gomplate" ] 63 64 FROM alpine:3.18 AS gomplate-alpine 65 66 ARG VCS_REF 67 ARG TARGETOS 68 ARG TARGETARCH 69 ARG TARGETVARIANT 70 71 LABEL org.opencontainers.image.revision=$VCS_REF \ 72 org.opencontainers.image.source="https://github.com/hairyhenderson/gomplate" 73 74 # tmp patch for CVE-2023-5363 75 RUN apk upgrade --no-cache libcrypto3 libssl3 76 77 COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt 78 COPY --from=build /bin/gomplate_${TARGETOS}-${TARGETARCH}${TARGETVARIANT} /bin/gomplate 79 80 ENTRYPOINT [ "/bin/gomplate" ] 81 82 FROM scratch AS gomplate-slim-linux 83 84 ARG VCS_REF 85 ARG TARGETOS 86 ARG TARGETARCH 87 ARG TARGETVARIANT 88 89 LABEL org.opencontainers.image.revision=$VCS_REF \ 90 org.opencontainers.image.source="https://github.com/hairyhenderson/gomplate" 91 92 COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt 93 COPY --from=compress /bin/gomplate_${TARGETOS}-${TARGETARCH}${TARGETVARIANT}-slim /gomplate 94 95 ENTRYPOINT [ "/gomplate" ] 96 97 FROM --platform=windows/amd64 mcr.microsoft.com/windows/nanoserver:2009 AS gomplate-windows 98 ARG TARGETOS 99 ARG TARGETARCH 100 ARG TARGETVARIANT 101 COPY --from=build /bin/gomplate_${TARGETOS}-${TARGETARCH}${TARGETVARIANT}.exe /gomplate.exe 102 103 FROM --platform=windows/amd64 mcr.microsoft.com/windows/nanoserver:2009 AS gomplate-slim-windows 104 ARG TARGETOS 105 ARG TARGETARCH 106 ARG TARGETVARIANT 107 COPY --from=compress /bin/gomplate_${TARGETOS}-${TARGETARCH}${TARGETVARIANT}-slim.exe /gomplate.exe 108 109 FROM gomplate-$TARGETOS AS gomplate 110 FROM gomplate-slim-$TARGETOS AS gomplate-slim