# Base image
FROM node:20 as build
USER root

RUN npm install -g npm@9.6.5

# Create app directory
WORKDIR /usr/src/app

# Copy package files
COPY package*.json ./

# Install app dependencies
RUN npm install

# Copy application code
COPY . .

# Build the application
RUN npm run build

# Prune dev dependencies
RUN npm prune --omit=dev

# Production stage
FROM node:20-alpine As production

# Create app directory
WORKDIR /usr/src/app

# Copy dependencies and built code from build stage
COPY --from=build /usr/src/app/node_modules /usr/src/app/node_modules
COPY --from=build /usr/src/app/dist /usr/src/app/dist
COPY --from=build /usr/src/app/package*.json /usr/src/app/

# Expose application port
EXPOSE 3000

# Start the application (NestJS entry point)
CMD ["node", "dist/main.js"]
