e36137f5a1
Two image-label fixes: - Add `org.opencontainers.image.source` so tools like renovate can retrieve release notes from the source repo. - Re-declare `ARG VERSION` in the final stage. `ARG` after `FROM` is stage-scoped, so the builder-stage `VERSION` never reached the final stage and `org.opencontainers.image.version` expanded to an empty string in published images. Closes #192 --- This PR was written with the help of Claude Opus 4.7 Reviewed-on: https://gitea.com/gitea/gitea-mcp/pulls/193 Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: silverwind <me@silverwind.io> Co-committed-by: silverwind <me@silverwind.io>
36 lines
840 B
Docker
36 lines
840 B
Docker
# syntax=docker/dockerfile:1.4
|
|
|
|
# Build stage
|
|
FROM --platform=$BUILDPLATFORM golang:1.26-alpine AS builder
|
|
|
|
ARG VERSION=dev
|
|
ARG TARGETOS
|
|
ARG TARGETARCH
|
|
|
|
WORKDIR /app
|
|
|
|
COPY go.mod go.sum ./
|
|
RUN --mount=type=cache,target=/go/pkg/mod \
|
|
go mod download
|
|
|
|
COPY . .
|
|
RUN --mount=type=cache,target=/go/pkg/mod \
|
|
--mount=type=cache,target=/root/.cache/go-build \
|
|
CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH:-amd64} \
|
|
go build -trimpath -ldflags="-s -w -X main.Version=${VERSION}" -o gitea-mcp
|
|
|
|
# Final stage
|
|
FROM gcr.io/distroless/static-debian12:nonroot
|
|
|
|
ARG VERSION=dev
|
|
|
|
WORKDIR /app
|
|
COPY --from=builder --chown=nonroot:nonroot /app/gitea-mcp .
|
|
|
|
USER nonroot:nonroot
|
|
|
|
LABEL org.opencontainers.image.version="${VERSION}"
|
|
LABEL org.opencontainers.image.source="https://gitea.com/gitea/gitea-mcp"
|
|
|
|
CMD ["/app/gitea-mcp"]
|