# Use Node.js 20 LTS (Alpine variant for small image size)
FROM node:20-alpine

# Set npm global config
ENV NPM_CONFIG_PREFIX=~/.npm-global

# Install required build tools
RUN apk add --no-cache g++ make python3 py3-pip

# Create npm-global directory
RUN mkdir ~/.npm-global

# Create app directory and set permissions
RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app
WORKDIR /home/node/app

# Copy package.json and package-lock.json with correct ownership
COPY --chown=node:node package*.json ./

# Switch to non-root user
USER node

# Install dependencies
RUN npm install

# Install global tools (you can pin or keep latest)
RUN npm install --unsafe-perm --global typescript ts-node

# Copy app source code
COPY --chown=node:node . .


# Run app
CMD ["npm", "run", "dev"]
