Kafka consumers and WorkerPool are moved out of the server process into a dedicated worker binary. Server now handles HTTP + SSE only; worker handles Kafka consumption and AI processing. - cmd/worker/main.go + init.go: new binary with minimal config (DATABASE_URL, OPENAI_API_KEY, KAFKA_BROKERS) - cmd/server: remove WorkerPool, paidConsumer, freeConsumer - Dockerfile: builds both server and worker binaries - docker-compose.yml: add worker service - Makefile: add run-worker and docker-logs-worker targets - README.md: document worker startup and env vars Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
19 lines
426 B
Docker
19 lines
426 B
Docker
# Build
|
|
FROM golang:1.25-alpine AS builder
|
|
WORKDIR /build
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
COPY . .
|
|
RUN CGO_ENABLED=0 go build -o /app/server ./cmd/server && \
|
|
CGO_ENABLED=0 go build -o /app/worker ./cmd/worker
|
|
|
|
# Run
|
|
FROM alpine:3.19
|
|
RUN apk add --no-cache ca-certificates
|
|
WORKDIR /app
|
|
COPY --from=builder /app/server .
|
|
COPY --from=builder /app/worker .
|
|
COPY migrations ./migrations
|
|
EXPOSE 8080
|
|
CMD ["./server"]
|