################################################
FROM node:lts-alpine AS base

# Create user and group
RUN mkdir /app && \
    addgroup -g 1001 -S nodejs && \
    adduser -S nodejs -u 1001 && \
    chown -R nodejs:nodejs /app

WORKDIR /app

################################################
FROM base AS build

# Create app directory and copy the app
COPY package*.json tsconfig.json ./

# Install
RUN npm install

# Copy the app
COPY src ./src

# Build
RUN npm run build

################################################
FROM node:lts-alpine

# Install dependencies but skip dev dependencies
COPY --from=build /app/package*.json ./
RUN npm install --only=production

# Copy the app
COPY --from=build /app/dist ./dist

# Start the app
ENTRYPOINT ["npm", "run"]
CMD ["start"]