| FROM node:20-alpine | |
| # Ensure Next.js native binaries work on Alpine | |
| RUN apk add --no-cache libc6-compat | |
| ENV NODE_ENV=production \ | |
| NEXT_TELEMETRY_DISABLED=1 \ | |
| PORT=7860 \ | |
| NEXT_PUBLIC_SERVER_MODE=true \ | |
| SESSION_SECRET=YXBwc2VjcmV0MTIzNDU2Nzg5MGFiY2RlZmdoaWprbG0= \ | |
| ANALYTICS_SECRET=YW5hbHl0aWNzMTIzNDU2Nzg5MGFiY2RlZmdoaWprbG0= \ | |
| SECRETS_ENCRYPTION_KEY=c2VjcmV0c2VuY3J5cHRpb25rZXkxMjM0NTY3ODkwYWI= | |
| WORKDIR /app | |
| # Install deps with cache-friendly layering | |
| COPY package.json package-lock.json ./ | |
| RUN npm ci --include=dev | |
| # Copy source and build | |
| COPY . . | |
| RUN npm run build | |
| EXPOSE 7860 | |
| # Bind to the required HF port and host | |
| CMD ["npm", "run", "start", "--", "-p", "7860", "-H", "0.0.0.0"] | |