FROM node:22-alpine # Set working directory WORKDIR /app # Copy package files COPY package*.json ./ # Install ALL dependencies (including devDependencies for build) RUN npm ci # Copy source code COPY . . # Build TypeScript RUN npm run build # Remove devDependencies after build to reduce image size RUN npm prune --production # Create a non-root user for security RUN addgroup -g 1001 -S nodejs && \ adduser -S nodejs -u 1001 # Change ownership RUN chown -R nodejs:nodejs /app # Switch to non-root user USER nodejs # Expose port EXPOSE 8080 # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \ CMD wget --quiet --tries=1 --spider http://localhost:8080/health || exit 1 # Start the application CMD ["node", "dist/index.js"]