# ── Stage 1: Build ──────────────────────────────────────────────
# Utiliser Debian (slim) pour builder ET runtime → même libc (glibc)
# Évite l'incompatibilité musl/glibc avec better-sqlite3 (addon natif)
FROM node:22-slim AS builder

WORKDIR /app

# Install build dependencies for better-sqlite3 (native addon)
RUN apt-get update && apt-get install -y --no-install-recommends \
    python3 make g++ \
    && rm -rf /var/lib/apt/lists/*

COPY package.json package-lock.json ./
RUN npm ci

COPY . .
RUN npm run build

# ── Stage 2: Runtime ────────────────────────────────────────────
FROM node:22-slim

WORKDIR /app

RUN apt-get update && apt-get install -y --no-install-recommends \
    tini \
    && rm -rf /var/lib/apt/lists/*

# Copy built output and production node_modules
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./

# Create directories for persistent data
RUN mkdir -p /data /uploads && chown -R node:node /data /uploads /app

USER node

ENV HOST=0.0.0.0
ENV PORT=4321
ENV DATABASE_PATH=/data/emdash.db
ENV UPLOAD_DIR=/uploads

EXPOSE 4321

VOLUME ["/data", "/uploads"]

ENTRYPOINT ["tini", "--"]
CMD ["node", "./dist/server/entry.mjs"]
