echos-ocr/Dockerfile
Randall Stillwell 3cbba0cf4e Lower build memory ceiling to 1024MB and clean npm cache in deps layer
The 3GB Coolify server OOMs during Next.js build when node uses 1.5GB
because Docker overhead + OS leaves less than 2GB available. Also
clean npm cache after install to free ~100MB in the deps layer.

Made-with: Cursor
2026-04-07 23:14:09 -05:00

54 lines
1.5 KiB
Docker

FROM node:24-slim AS base
RUN apt-get update && apt-get install -y --no-install-recommends \
graphicsmagick \
ghostscript \
&& rm -rf /var/lib/apt/lists/*
FROM base AS deps
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci --ignore-scripts && npm cache clean --force
FROM base AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
ENV NEXT_TELEMETRY_DISABLED=1
ENV NODE_OPTIONS="--max-old-space-size=1024"
RUN npx prisma generate && npx next build
# Standalone prisma install for runtime db push
FROM base AS prisma-cli
WORKDIR /tmp/prisma
RUN npm init -y > /dev/null 2>&1 && npm install --ignore-scripts prisma dotenv @prisma/adapter-pg 2>/dev/null
FROM base AS runner
WORKDIR /app
ENV NODE_ENV=production
ENV NEXT_TELEMETRY_DISABLED=1
RUN groupadd --system --gid 1001 nodejs
RUN useradd --system --uid 1001 nextjs
COPY --from=builder /app/public ./public
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
COPY --from=builder /app/prisma ./prisma
COPY --from=builder /app/prisma.config.ts ./prisma.config.ts
COPY --from=builder /app/start.sh ./start.sh
# Merge prisma CLI + deps into node_modules (alongside standalone deps)
COPY --chown=nextjs:nodejs --from=prisma-cli /tmp/prisma/node_modules ./node_modules
RUN mkdir -p /data/watch && chown -R nextjs:nodejs /data
USER nextjs
EXPOSE 3000
ENV PORT=3000
ENV HOSTNAME="0.0.0.0"
CMD ["sh", "start.sh"]