forked from baron/baron-sso
50 lines
1.1 KiB
Docker
50 lines
1.1 KiB
Docker
# 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"]
|