# Go build FROM golang:1.22 AS go-build # Add known_hosts entries for GitHub and GitLab RUN mkdir ~/.ssh RUN ssh-keyscan github.com >> ~/.ssh/known_hosts RUN ssh-keyscan gitlab.com >> ~/.ssh/known_hosts COPY Makefile /app/ WORKDIR /app COPY go.* /app/ RUN go mod download COPY core /app/core COPY pkg /app/pkg COPY cmd /app/cmd COPY api /app/api # These are ARGS are defined here to minimise cache misses # (cf. https://docs.docker.com/engine/reference/builder/#impact-on-build-caching) # Pass these flags so we don't have to copy .git/ for those commands to work ARG GIT_COMMIT="_unset_" ARG LDFLAGS="-X localbuild=true" RUN --mount=type=cache,target=/root/.cache/go-build LDFLAGS=${LDFLAGS##-X localbuild=true} GIT_COMMIT=$GIT_COMMIT make gitops-bucket-server # Distroless FROM gcr.io/distroless/base as runtime COPY --from=go-build /app/bin/gitops-bucket-server /gitops-bucket-server COPY --from=go-build /root/.ssh/known_hosts /root/.ssh/known_hosts ENTRYPOINT ["/gitops-bucket-server"]