# syntax=docker/dockerfile:1.7 FROM golang:1.26.2-alpine AS base WORKDIR /app RUN apk add --no-cache git COPY go.mod go.sum ./ RUN go mod download FROM base AS dev COPY . . RUN --mount=type=cache,target=/root/.cache/go-build \ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \ go build -trimpath -ldflags="-s -w" -o /usr/local/bin/baron-backend-dev ./cmd/server EXPOSE 3000 CMD ["/usr/local/bin/baron-backend-dev"] FROM base AS builder ARG TARGETOS=linux ARG TARGETARCH=amd64 COPY . . RUN --mount=type=cache,target=/root/.cache/go-build \ CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} \ go build -trimpath -ldflags="-s -w" -o /out/main ./cmd/server && \ CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} \ go build -trimpath -ldflags="-s -w" -o /out/healthcheck ./cmd/healthcheck FROM gcr.io/distroless/static-debian13:nonroot AS production WORKDIR /app COPY --from=builder --chown=65532:65532 /out/main ./main COPY --from=builder --chown=65532:65532 /out/healthcheck ./healthcheck COPY --from=builder --chown=65532:65532 /app/docs ./docs EXPOSE 3000 USER 65532:65532 ENTRYPOINT ["/app/main"]