# Stage 1: Build Binary FROM golang:1.22 AS builder WORKDIR /app # Download Dependencies COPY go.mod go.sum ./ RUN --mount=type=cache,target=/root/.cache/go-build \ go mod download # Setup and Build COPY . ./ RUN --mount=type=bind \ CGO_ENABLED=0 GOOS=linux go build -o /snow # Stage 2: Deploy Binary FROM busybox:1.36-glibc as busybox FROM gcr.io/distroless/base AS deploy WORKDIR /app # Copy binaries from Busybox COPY --from=busybox /bin /bin # Setup user RUN adduser -D -h /app snow RUN chown snow /app COPY --from=builder --chown=snow --chmod=700 /snow /app/snow EXPOSE 3000 ENTRYPOINT ["/app/snow"]