# Use the official node image (already contains 'node' user with UID 1000) FROM node:20 # 1. Install system dependencies as ROOT RUN apt-get update && apt-get install -y --no-install-recommends \ python3 \ make \ g++ \ libvips-dev \ ca-certificates \ && rm -rf /var/lib/apt/lists/* # 2. Use the PRE-EXISTING 'node' user (UID 1000) USER node ENV HOME=/home/node \ PATH=/home/node/.local/bin:$PATH \ TF_CPP_MIN_LOG_LEVEL=2 WORKDIR $HOME/app # 3. Handle dependencies # Note: --chown=node:node is critical for permissions COPY --chown=node:node package*.json ./ RUN npm install --legacy-peer-deps --include=optional # 4. Copy and Build COPY --chown=node:node . . # Increase memory for the build process ENV NODE_OPTIONS="--max-old-space-size=4096" RUN CI=false npm run build # Final setup RUN mkdir -p server/uploads ENV NODE_ENV=production ENV PORT=7860 EXPOSE 7860 CMD ["node", "server/index.js"]