FROM node:20-alpine WORKDIR /app # Copy package files and install dependencies COPY package.json package-lock.json* ./ RUN npm install --omit=dev # Copy application files COPY server.js ./ COPY public/ ./public/ # Create uploads directory RUN mkdir -p uploads # Expose port EXPOSE 3000 # Health check HEALTHCHECK --interval=30s --timeout=5s --start-period=10s \ CMD wget --no-verbose --tries=1 --spider http://localhost:3000/ || exit 1 # Run as non-root user RUN addgroup -g 1001 -S appgroup && \ adduser -S appuser -u 1001 -G appgroup && \ chown -R appuser:appgroup /app USER appuser CMD ["node", "server.js"]