File size: 936 Bytes
b883764 8f5d9e5 57da3ff fb43d41 b883764 fb43d41 57da3ff 8f5d9e5 57da3ff fb43d41 b883764 fb43d41 755f171 fb43d41 b883764 57da3ff fb43d41 8f5d9e5 57da3ff fb43d41 8f5d9e5 57da3ff | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | # 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"]
|