# syntax=docker/dockerfile:1.20
FROM golang:1.25-alpine@sha256:f6751d823c26342f9506c03797d2527668d095b0a15f1862cddb4d927a7a4ced AS builder
WORKDIR /app
# Copy go.mod and go.sum first for better layer caching
COPY go.mod go.sum ./
# Download dependencies with cache mounts
RUN --mount=type=cache,target=/go/pkg/mod \
--mount=type=cache,target=/root/.cache/go-build \
go mod download
# Copy source code
COPY . .
# Build the binary with cache mounts
RUN --mount=type=cache,target=/go/pkg/mod \
--mount=type=cache,target=/root/.cache/go-build \
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags="-s -w" -o /luno-mcp ./cmd/server
FROM alpine:3.23@sha256:865b95f46d98cf867a156fe4a135ad3fe50d2056aa3f25ed31662dff6da4eb62
RUN apk --no-cache add ca-certificates && \
addgroup -g 1001 app && \
adduser -D -u 1001 -G app app
COPY --from=builder /luno-mcp /luno-mcp
USER app
ENTRYPOINT ["/luno-mcp"]