# Build stage
FROM golang:1.25-alpine AS builder

# Install build dependencies (SQLite requires CGO)
RUN apk add --no-cache gcc musl-dev sqlite-dev

WORKDIR /build

# Copy go mod files
COPY go.mod go.sum ./
RUN go mod download

# Copy source code
COPY . .

# Build the binaries
# CGO is required for mattn/go-sqlite3
RUN mkdir -p bin && \
    CGO_ENABLED=1 GOOS=linux go build -a -installsuffix cgo -o bin/whatshook-server ./cmd/server && \
    CGO_ENABLED=1 GOOS=linux go build -a -installsuffix cgo -o bin/whatshook-cli ./cmd/cli

# Runtime stage
FROM alpine:latest

# Install runtime dependencies
RUN apk add --no-cache ca-certificates sqlite-libs tzdata

WORKDIR /app

# Copy binaries from builder
COPY --from=builder /build/bin ./bin

# Create necessary directories
RUN mkdir -p /app/sessions /app/data/media /app/data/certs

# Expose the default server port
EXPOSE 8825

# Run the server
ENTRYPOINT ["/app/bin/whatshook-server"]
CMD ["-config", "/app/config.json"]
