mirror of
https://gitea.com/gitea/gitea-mcp.git
synced 2025-08-23 14:23:05 +00:00
- Switch build base image to Alpine and set platform dynamically - Use distroless nonroot image for final stage to enhance security - Add build arguments for VERSION, TARGETOS, and TARGETARCH with defaults - Cache Go module and build dependencies to improve build performance - Remove manual installation of ca-certificates and user creation (handled by base image) - Set nonroot user for running the application - Add healthcheck for the built binary - Add OCI-compliant author and version labels Signed-off-by: appleboy <appleboy.tw@gmail.com> Reviewed-on: https://gitea.com/gitea/gitea-mcp/pulls/50 Co-authored-by: appleboy <appleboy.tw@gmail.com> Co-committed-by: appleboy <appleboy.tw@gmail.com>
39 lines
917 B
Docker
39 lines
917 B
Docker
# syntax=docker/dockerfile:1.4
|
|
|
|
# Build stage
|
|
FROM --platform=$BUILDPLATFORM golang:1.24-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-debian11:nonroot
|
|
|
|
ENV GITEA_MODE=stdio
|
|
|
|
WORKDIR /app
|
|
COPY --from=builder --chown=nonroot:nonroot /app/gitea-mcp .
|
|
|
|
USER nonroot:nonroot
|
|
|
|
HEALTHCHECK --interval=30s --timeout=3s \
|
|
CMD ["/app/gitea-mcp", "healthcheck"]
|
|
|
|
LABEL org.opencontainers.image.authors="your-team@example.com"
|
|
LABEL org.opencontainers.image.version="${VERSION}"
|
|
|
|
CMD ["/app/gitea-mcp"]
|