# 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 8080 # Run the server ENTRYPOINT ["/app/bin/whatshook-server"] CMD ["-config", "/app/config.json"]