FROM node:20-alpine # Install MinIO client (detect architecture) RUN ARCH=$(uname -m | sed 's/x86_64/amd64/g' | sed 's/aarch64/arm64/g') && \ wget https://dl.min.io/client/mc/release/linux-${ARCH}/mc && \ chmod +x mc && \ mv mc /usr/local/bin/ # Create app directory WORKDIR /app # Copy package files COPY package*.json ./ # Install build tools for native dependencies (keep them) RUN apk add --no-cache python3 make g++ \ && rm -rf /app/node_modules # Install production dependencies (will trigger postinstall) RUN npm ci --only=production # Copy application files COPY . . # Rebuild bcrypt after copying files RUN npm rebuild bcrypt --build-from-source # Create non-root user RUN addgroup -g 1001 -S nodejs && \ adduser -S nodejs -u 1001 # Create necessary directories with proper permissions RUN mkdir -p logs /tmp/minio-webui-temp && \ chown -R nodejs:nodejs /app && \ chown nodejs:nodejs /tmp/minio-webui-temp && \ chmod 755 logs /tmp/minio-webui-temp # Switch to non-root user USER nodejs # Expose port EXPOSE 3000 # Start the application CMD ["node", "src/app.js"]