# Stage 1: Build & install production dependencies
FROM node:20-alpine AS builder

WORKDIR /app

# Copy dependency configs
COPY package.json ./

# Install only production dependencies
RUN npm install --only=production

# Stage 2: Final runtime container
FROM node:20-alpine

WORKDIR /app

# Copy built node_modules
COPY --from=builder /app/node_modules ./node_modules
COPY package.json ./
COPY cmd/ ./cmd/
COPY internal/ ./internal/

# Use the built-in non-root user 'node' (UID 1000)
USER node

# Expose backend service port
EXPOSE 47880

# Execute server
CMD ["node", "cmd/server/main.js"]
