# Build stage FROM node:18-alpine AS builder WORKDIR /app # Copy package files COPY package*.json ./ # Install dependencies RUN npm ci --only=production && npm cache clean --force # Runtime stage FROM node:18-alpine # Install wget for healthcheck RUN apk add --no-cache wget WORKDIR /app # Copy dependencies from builder COPY --from=builder /app/node_modules ./node_modules # Copy application files COPY package*.json ./ COPY server.js ./ COPY public ./public COPY routes ./routes COPY services ./services COPY config ./config COPY controllers ./controllers COPY middleware ./middleware COPY utils ./utils # Create non-root user RUN addgroup -g 1001 -S nodejs && \ adduser -S nodejs -u 1001 # Change ownership RUN chown -R nodejs:nodejs /app USER nodejs EXPOSE 3000 CMD ["node", "server.js"]