FROM golang:1.23-alpine AS build
WORKDIR /src

# modernc.org/sqlite is a pure-Go database/sql driver; no compiler toolchain or
# CGO runtime is required. Dependencies are resolved in a separate layer so
# normal source changes do not redownload the SQLite module tree.
COPY go.mod go.sum ./
RUN go mod download

COPY cmd ./cmd
COPY internal ./internal
RUN CGO_ENABLED=0 GOOS=linux go build -mod=mod -trimpath -ldflags="-s -w" -o /out/neural-brain ./cmd/brain

FROM alpine:3.21
RUN addgroup -S brain && adduser -S -G brain brain
WORKDIR /app
COPY --from=build /out/neural-brain /usr/local/bin/neural-brain
RUN mkdir -p /app/data /sources/knowledge /sources/staging /sources/agent-data && chown -R brain:brain /app /sources
USER brain
EXPOSE 8090
ENTRYPOINT ["neural-brain"]
