FROM docker.io/library/golang:1.25.14-bookworm@sha256:c268a04d59aea0b180ed9946a658cfab9e7b3391dc90eed6e4969ccff98c851f AS build ENV GOTOOLCHAIN=local CGO_ENABLED=0 WORKDIR /src COPY src/go.* ./ RUN --mount=type=cache,target=/go/pkg/mod go mod download COPY src/ ./ RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg/mod \ test -z "$(gofmt -l .)" \ && go test ./... \ && go vet ./... \ && go build -trimpath -ldflags='-s -w' -o /out/demo . FROM scratch AS runtime ARG SOURCE_REVISION LABEL org.opencontainers.image.source="https://git.dever.cc/rabin/demo" \ org.opencontainers.image.revision=$SOURCE_REVISION COPY --from=build /out/demo /demo USER 65532:65532 ENV PORT=8080 EXPOSE 8080 ENTRYPOINT ["/demo"]