github.com/hairyhenderson/gomplate/v4@v4.0.0-pre-2.0.20240520121557-362f058f0c93/Dockerfile (about)

     1  # syntax=docker/dockerfile:1.6-labs
     2  FROM --platform=linux/amd64 golang:1.22-alpine AS build
     3  
     4  ARG TARGETOS
     5  ARG TARGETARCH
     6  ARG TARGETVARIANT
     7  ENV GOOS=$TARGETOS GOARCH=$TARGETARCH
     8  
     9  RUN apk add --no-cache make git
    10  
    11  WORKDIR /go/src/github.com/hairyhenderson/gomplate
    12  COPY go.mod /go/src/github.com/hairyhenderson/gomplate
    13  COPY go.sum /go/src/github.com/hairyhenderson/gomplate
    14  
    15  RUN --mount=type=cache,id=go-build-${TARGETOS}-${TARGETARCH}${TARGETVARIANT},target=/root/.cache/go-build \
    16  	--mount=type=cache,id=go-pkg-${TARGETOS}-${TARGETARCH}${TARGETVARIANT},target=/go/pkg \
    17  		go mod download -x
    18  
    19  COPY . /go/src/github.com/hairyhenderson/gomplate
    20  
    21  RUN --mount=type=cache,id=go-build-${TARGETOS}-${TARGETARCH}${TARGETVARIANT},target=/root/.cache/go-build \
    22  	--mount=type=cache,id=go-pkg-${TARGETOS}-${TARGETARCH}${TARGETVARIANT},target=/go/pkg \
    23  		make build
    24  RUN mv bin/gomplate* /bin/
    25  
    26  FROM scratch AS gomplate-linux
    27  
    28  ARG VCS_REF
    29  ARG TARGETOS
    30  ARG TARGETARCH
    31  ARG TARGETVARIANT
    32  
    33  LABEL org.opencontainers.image.revision=$VCS_REF \
    34  	org.opencontainers.image.source="https://github.com/hairyhenderson/gomplate"
    35  
    36  COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
    37  COPY --from=build /bin/gomplate_${TARGETOS}-${TARGETARCH}${TARGETVARIANT} /gomplate
    38  
    39  ENTRYPOINT [ "/gomplate" ]
    40  
    41  FROM alpine:3.19 AS gomplate-alpine
    42  
    43  ARG VCS_REF
    44  ARG TARGETOS
    45  ARG TARGETARCH
    46  ARG TARGETVARIANT
    47  
    48  LABEL org.opencontainers.image.revision=$VCS_REF \
    49  	org.opencontainers.image.source="https://github.com/hairyhenderson/gomplate"
    50  
    51  COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
    52  COPY --from=build /bin/gomplate_${TARGETOS}-${TARGETARCH}${TARGETVARIANT} /bin/gomplate
    53  
    54  ENTRYPOINT [ "/bin/gomplate" ]
    55  
    56  FROM --platform=windows/amd64 mcr.microsoft.com/windows/nanoserver:ltsc2022 AS gomplate-windows
    57  ARG TARGETOS
    58  ARG TARGETARCH
    59  ARG TARGETVARIANT
    60  COPY --from=build /bin/gomplate_${TARGETOS}-${TARGETARCH}${TARGETVARIANT}.exe /gomplate.exe
    61  
    62  FROM gomplate-$TARGETOS AS gomplate