FROM registry.hub.docker.com/library/golang:1.20.5-alpine3.18 as builder RUN apk update && apk upgrade && \ apk add --no-cache bash build-base WORKDIR /opt/flux-helm-controller COPY go.mod . COPY go.sum . RUN go mod download COPY . . ARG GOARCH RUN GOOS=linux CGO_ENABLED=0 go build -tags build -o /usr/local/bin/flux-helm-controller main.go FROM ghcr.io/allanger/dumb-downloader as dudo RUN apt-get update -y && apt-get install tar -y ARG HELM_VERSION=v3.12.1 ENV RUST_LOG=info RUN dudo -l "https://get.helm.sh/helm-{{ version }}-{{ os }}-{{ arch }}.tar.gz" -d /tmp/helm.tar.gz -p $HELM_VERSION RUN tar -xf /tmp/helm.tar.gz -C /tmp && rm -f /tmp/helm.tar.gz RUN mkdir /out && for bin in `find /tmp | grep helm`; do cp $bin /out/; done RUN chmod +x /out/helm # Final container FROM registry.hub.docker.com/library/alpine:3.18 LABEL org.opencontainers.image.authors="Nikolai Rodionov" COPY --from=dudo /out/ /usr/bin RUN apk update --no-cache && apk add openssh git yq rsync --no-cache # # install operator binary COPY --from=builder /usr/local/bin/flux-helm-controller /usr/local/bin/flux-helm-controller ENTRYPOINT ["/usr/local/bin/flux-helm-controller"]