# Context: project root
# docker build -f server/Dockerfile -t containarr-server .

# ── Stage 1 : build SvelteKit ─────────────────────────────────────────────────
FROM node:20-alpine AS web-builder
WORKDIR /web
COPY web/package*.json ./
RUN npm ci
COPY web/ ./
RUN npm run build
# Output: /web/build/

# ── Stage 2 : build Go server ─────────────────────────────────────────────────
FROM golang:1.23-alpine AS go-builder
RUN apk add --no-cache gcc musl-dev
WORKDIR /src
COPY server/go.mod server/go.sum ./
RUN go mod download
COPY server/ ./
RUN CGO_ENABLED=1 GOOS=linux go build -ldflags="-s -w" -o /bin/containarr-server ./cmd/server

# ── Stage 3 : image finale ────────────────────────────────────────────────────
FROM alpine:3.20
RUN apk add --no-cache ca-certificates tzdata

WORKDIR /app
COPY --from=go-builder /bin/containarr-server ./containarr-server
COPY --from=web-builder /web/build ./web/build

VOLUME ["/data"]
EXPOSE 8080 9090

ENTRYPOINT ["/app/containarr-server"]
