# Build stage FROM golang:1.24-alpine AS builder WORKDIR /src RUN apk add --no-cache make gcc musl-dev COPY go.mod go.sum ./ RUN go mod download COPY . . # Run tests ENV DBURL="file::memory:?cache=shared" RUN go test ./... # Build binaries RUN CGO_ENABLED=1 go build -trimpath -ldflags="-s -w" -o /chatd ./cmd/chatd/ RUN CGO_ENABLED=1 go build -trimpath -ldflags="-s -w" -o /chat-cli ./cmd/chat-cli/ # Final stage — server only FROM alpine:3.21 RUN apk add --no-cache ca-certificates COPY --from=builder /chatd /usr/local/bin/chatd EXPOSE 8080 ENTRYPOINT ["chatd"]