FROM node:25-alpine AS web-builder WORKDIR /app RUN npm i -g pnpm COPY ./web/package.json ./web/pnpm-lock.yaml ./ RUN pnpm install --frozen-lockfile COPY ./web/ ./ RUN pnpm build FROM golang:1.25-alpine AS api-builder WORKDIR /app RUN apk add --no-cache gcc musl-dev COPY go.mod go.sum ./ RUN go mod verify && go mod download COPY . . COPY --from=web-builder /app/dist ./web/dist RUN CGO_ENABLED=1 go build -o tvqueue . FROM alpine:latest WORKDIR /app COPY --from=api-builder /app/tvqueue /app/tvqueue EXPOSE 5000 ENTRYPOINT ["/app/tvqueue"]