FROM node:23-alpine # Create a non-root user with specific UID and GID RUN addgroup -g 1000 -S appgroup && adduser -u 1000 -S -G appgroup appuser # Set working directory WORKDIR /home/appuser/app # Copy package files with correct ownership COPY --chown=appuser:appgroup package*.json ./ # Install dependencies RUN npm install # Copy application files with correct ownership COPY --chown=appuser:appgroup main.js util.js worker.js ./ # Create logs directory with correct permissions RUN mkdir -p logs && chown -R appuser:appgroup logs # Expose logs directory as a volume VOLUME ["/home/appuser/app/logs"] # Use an environment variable for thread count (default to 0 to use auto) ENV THREAD_COUNT=0 # Switch to non-root user USER appuser # Run the application - using JSON array format CMD ["sh", "-c", "node main.js ${THREAD_COUNT}"]