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