FROM golang:1.26.0-alpine AS builder
WORKDIR /app
COPY go.mod .
# Skip go.sum since we're building fresh
RUN go mod download
COPY . .
RUN go build -o server .
RUN go build -o migrate ./cmd/migrate
RUN go build -o seed ./cmd/seed
RUN go build -o worker ./cmd/worker

FROM alpine:3.23.3 AS backend
WORKDIR /app
COPY --from=builder /app/server /app/server
EXPOSE 8080
ENTRYPOINT ["/app/server"]

FROM alpine:3.23.3 AS migrate
WORKDIR /app
COPY --from=builder /app/migrate /app/migrate
COPY ./migrations /app/migrations
ENTRYPOINT ["/app/migrate", "/app/migrations"]

FROM alpine:3.23.3 AS seed
WORKDIR /app
COPY --from=builder /app/seed /app/seed
ENTRYPOINT ["/app/seed"]

FROM alpine:3.23.3 AS worker
WORKDIR /app
COPY --from=builder /app/worker /app/worker
ENTRYPOINT ["/app/worker"]
