FROM golang:1.25-alpine AS backend-build WORKDIR /src COPY go.mod ./ COPY go.sum ./ RUN go mod download COPY cmd ./cmd COPY internal ./internal RUN go build -o /out/temporserv ./cmd/server FROM node:24-alpine AS web-build WORKDIR /src COPY apps/web/package*.json ./apps/web/ RUN cd apps/web && npm install COPY apps/web ./apps/web RUN cd apps/web && npm run build FROM alpine:3.21 WORKDIR /app RUN adduser -D appuser COPY --from=backend-build /out/temporserv /app/temporserv COPY --from=web-build /src/apps/web/dist /app/web RUN mkdir -p /app/data /music && chown -R appuser:appuser /app /music USER appuser EXPOSE 5050 CMD ["/app/temporserv"]