gomcp/Dockerfile

38 lines
1,019 B
Docker

# syntax=docker/dockerfile:1
# Syntrex GoMCP — Multi-stage build
# ─── Build stage ────────────────────────────────────
FROM golang:1.25-alpine AS builder
RUN apk add --no-cache ca-certificates tzdata
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY . .
# Build static binary (modernc/sqlite = pure Go, no CGO needed).
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o /gomcp ./cmd/gomcp
# ─── Runtime stage ──────────────────────────────────
FROM alpine:3.20
RUN apk add --no-cache ca-certificates
RUN addgroup -S syntrex && adduser -S syntrex -G syntrex
WORKDIR /app
COPY --from=builder /gomcp /app/gomcp
# Create data directory for SQLite + RLM
RUN mkdir -p /data/.rlm && chown -R syntrex:syntrex /data
USER syntrex
EXPOSE 9750
ENV RLM_DIR=/data/.rlm
ENV GOMCP_HTTP_PORT=9750
ENTRYPOINT ["/app/gomcp"]
CMD ["--http-port", "9750"]