# ============================================================================ # kamado-api build stage # ============================================================================ FROM golang:1.22-bookworm AS build WORKDIR /src # Cache deps first COPY go.mod ./ RUN go mod download 2>/dev/null || true COPY . . # Static build — CGO off, stripped, reproducible-ish RUN CGO_ENABLED=0 GOOS=linux go build \ -trimpath \ -ldflags="-s -w" \ -o /out/kamado-api \ ./cmd/kamado-api # ============================================================================ # Runtime: distroless-ish minimal # ============================================================================ FROM debian:bookworm-slim AS runtime RUN apt-get update && apt-get install --no-install-recommends -y \ ca-certificates \ tini \ && rm -rf /var/lib/apt/lists/* \ && mkdir -p /var/lib/kamado /var/log/ckpool /run/ckpool COPY --from=build /out/kamado-api /usr/local/bin/kamado-api EXPOSE 8080 ENTRYPOINT ["/usr/bin/tini", "--", "/usr/local/bin/kamado-api"]